如何使用实体框架向数据库服务器询问当前日期时间?

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();



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因