Wie fragt man den Datenbankserver nach der aktuellen Zeit mit dem Entity Framework?

entity-framework entity-framework-4 entity-framework-6

Frage

Ich habe eine Entität mit einer ModifiedDateTime-Eigenschaft, die ich mit dem aktuellen datetime aus der Datenbank anstelle des "Anwendung" -Servers aktualisieren möchte, der die Anwendung ausführt.

Jedes Mal, wenn ich in SQL Server 2008 eine Person zu meiner Dateibase aktualisieren oder hinzufügen möchte, möchte ich ModifiedDateTime abfüllen. Es ist nicht so, dass ich die Aktualisierungsabfrage wie mit dem Datenadapterbefehl ändern kann, wenn ich mit Dataset arbeite, und dass meine ModifiedDateTime als GetDate () definiert wird. Ich habe eine gespeicherte Funktion erstellt, um einen Wert der Methode GetDate () zurückzugeben, aber ich habe ein Problem, eine Prozedur zu importieren, die Werte wie int, string oder gar keinen Wert zurückgibt. In meinem Fall sind dies nur Entity-Werte als Person. Warum das?

Es wäre auf jeden Fall eine große Hilfe, wenn Sie mir helfen könnten, die aktuelle DateTime vom Datenbankserver abzurufen.

Akzeptierte Antwort

Gibt es einen Grund, warum Sie ihn nicht einfach in Ihre Datenbank verschieben können? Wenn Sie DateTime.Now in Ihre Entitätsabfrage einschließen, wird sie in die Datenbank heruntergeschoben (getdate).

Beispiel linq zu Entitäten

 var dQuery = dbContext.CreateQuery<DateTime>("CurrentDateTime() ");
 DateTime dbDate = dQuery.AsEnumerable().First();

SQL generiert ..

SELECT GetDate() AS [C1] FROM  ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable1]

Könnte es eine bessere Möglichkeit sein, es zu tun?


Beliebte Antwort

Dies ist ein Update der @Nix-Antwort auf EF4:

var dateQuery = dbContext.Database.SqlQuery<DateTime>("SELECT getdate()");
DateTime serverDate = dateQuery.AsEnumerable().First();


Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum