我有一个看起来很旧的查询
UPDATE table1 SET date_time_field = NOW() + INTERVAL 5 MINUTE WHERE ...;
我怎样才能在EF中做同样的事情?我不能写
....
table1_entity.date_time_field = DateTime.Now + TimeSpan.FromMinutes(5);
因为应用程序和数据库服务器可能使用不同的时区。是否有可能在没有本机查询的情况下实现此功能(这是我目前的方法,但我真的不喜欢它)? 感谢。
答案 0 :(得分:2)
将上述方法添加到datacontext类以获取数据库服务器时间:
[Function(Name="GetDate", IsComposable=true)]
public DateTime GetSystemDate()
{
MethodInfo mi = MethodBase.GetCurrentMethod() as MethodInfo;
return (DateTime)this.ExecuteMethodCall(this, mi, new object[]{}).ReturnValue;
}
从这篇文章中摘录:
Entity Framework - update field value to current DB server time
答案 1 :(得分:1)
一种方法是使用DateTime.Now
调用替换GetServerDatetime()
,并使用服务器的时区。另一个是存储时区。
我过去所做的是创建服务器时间的滑动窗口缓存(15分钟)(即每15分钟查询一次服务器时间并存储在本地)