/ / Objekt in EF - c # aktualisieren, Entity-Framework

Update Objekt in EF - c #, Entity-Framework

Ich habe eine alte Abfrage, die aussieht

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

Wie kann ich dasselbe in EF tun? Ich kann nicht schreiben

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

weil die Anwendung und der DB-Server verwenden könnenverschiedene Zeitzonen. Ist es möglich, diese Funktionalität ohne native Abfragen zu erreichen (dies ist mein derzeitiger Ansatz, aber ich mag es nicht wirklich)? Vielen Dank.

Antworten:

2 für die Antwort № 1

Fügen Sie die obige Methode zu Ihrer Datacontext-Klasse hinzu, um die Zeit des Datenbankservers abzurufen:

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

Auszug aus diesem Beitrag:

Entity Framework - Aktualisieren Sie den Feldwert auf die aktuelle DB-Serverzeit


1 für die Antwort № 2

Ein Ansatz ist zu ersetzen DateTime.Now mit einem GetServerDatetime() aufrufen und die Zeitzone des Servers verwenden. Eine andere ist das Speichern der Zeitzone.

Was ich in der Vergangenheit getan habe, ist das Erstellen eines gleitenden Fenstercaches (15 Minuten) der Serverzeit (d. H. Alle 15 Minuten wird die Serverzeit abgefragt und lokal gespeichert).