如何使用實體框架向數據庫服務器詢問當前日期時間?

entity-framework entity-framework-4 entity-framework-6

我有一個具有ModifiedDateTime屬性的實體,我想用數據庫中的當前日期時間而不是執行應用程序的“應用程序”服務器更新。

每次我想在SQL Server 2008上更新或添加人員到我的數據庫時,我想填寫ModifiedDateTime字段。當我使用數據集並為我的ModifiedDateTime定義為GetDate()時,我不能像使用數據適配器命令那樣更改更新查詢。我創建了存儲函數來返回一個GetDate()方法的值,但是我有一個問題就是導入過程,它返回值為int,string或者根本沒有值,只是實體值為Person,例如在我的情況下。這是為什麼?

無論如何,如果你能幫助我從數據庫服務器中檢索當前的DateTime,那將會很有幫助。

一般承認的答案

有沒有理由你不能把它推到你的數據庫?如果在實體查詢中包含DateTime.Now,它會將其(getdate)推送到數據庫。

示例linq到實體

 var dQuery = dbContext.CreateQuery<DateTime>("CurrentDateTime() ");
 DateTime dbDate = dQuery.AsEnumerable().First();

SQL生成..

SELECT GetDate() AS [C1] FROM  ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable1]

這可能是一個更好的方法嗎?


熱門答案

這是對EF4的@Nix響應的更新:

var dateQuery = dbContext.Database.SqlQuery<DateTime>("SELECT getdate()");
DateTime serverDate = dateQuery.AsEnumerable().First();


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因