/ / Zaktualizuj obiekt w EF - c #, encja-framework

Zaktualizuj obiekt w EF - c #, entity-framework

Mam stare zapytanie, które wygląda

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

Jak mogę zrobić to samo w EF? Nie mogę napisać

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

ponieważ aplikacja i serwer DB mogą korzystaćróżne strefy czasowe. Czy można osiągnąć tę funkcjonalność bez natywnych zapytań (co jest moim obecnym podejściem, ale mi się nie podoba)? Dzięki.

Odpowiedzi:

2 dla odpowiedzi № 1

Dodaj powyższą metodę do klasy datacontext, aby uzyskać czas serwera db:

[Function(Name="GetDate", IsComposable=true)]
public DateTime GetSystemDate()
{
MethodInfo mi = MethodBase.GetCurrentMethod() as MethodInfo;
return (DateTime)this.ExecuteMethodCall(this, mi, new object[]{}).ReturnValue;
}

Wyodrębniono z tego postu:

Entity Framework - zaktualizuj wartość pola do bieżącego czasu serwera DB


1 dla odpowiedzi nr 2

Jednym z podejść jest zastąpienie DateTime.Now z a GetServerDatetime() zadzwoń i użyj strefy czasowej serwera. Innym jest przechowywanie strefy czasowej.

W przeszłości robiłem pamięć podręczną przesuwanego okna (15 minut) czasu serwera (tj. Co 15 minut czas serwera jest sprawdzany i zapisywany lokalnie)