Обновить объект в EF - PullRequest
       2

Обновить объект в EF

0 голосов
/ 28 декабря 2010

У меня есть старый запрос, который выглядит

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

Как я могу сделать то же самое в EF?Я не могу написать

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

, поскольку приложение и сервер БД могут использовать разные часовые пояса.Можно ли достичь этой функциональности без собственных запросов (это мой текущий подход, но мне он не очень нравится)?Спасибо.

Ответы [ 2 ]

2 голосов
/ 28 декабря 2010

Добавьте указанный выше метод в ваш класс 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 - обновить значение поля в текущей БДвремя сервера

1 голос
/ 28 декабря 2010

Один из подходов заключается в замене DateTime.Now на GetServerDatetime() вызов и использовании часового пояса сервера.Другой способ - сохранить часовой пояс.

В прошлом я создавал кеш скользящего окна (15 минут) серверного времени (т. Е. Каждые 15 минут серверное время запрашивается и хранится локально)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...