更新EF中的对象

时间:2010-12-28 00:17:52

标签: c# entity-framework

我有一个看起来很旧的查询

UPDATE table1 SET date_time_field = NOW() + INTERVAL 5 MINUTE WHERE ...;

我怎样才能在EF中做同样的事情?我不能写

....
table1_entity.date_time_field = DateTime.Now + TimeSpan.FromMinutes(5);

因为应用程序和数据库服务器可能使用不同的时区。是否有可能在没有本机查询的情况下实现此功能(这是我目前的方法,但我真的不喜欢它)? 感谢。

2 个答案:

答案 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分钟查询一次服务器时间并存储在本地)