Frage

Ich habe ein Unternehmen mit einer ModifiedDateTime Eigenschaft, die ich will aus der Datenbank mit der aktuellen Datumzeit aktualisiert werden, anstelle des „Anwendung“ Servers die Anwendung ausgeführt wird.

Jedes Mal, wenn ich möchte eine Person, meine Datebase auf SQL Server 2008 Ich möchte aktualisieren oder fügen Sie ModifiedDateTime eingereicht füllen. Es ist nicht wie ich Update-Abfrage wie mit Datenadapter Befehl ändern kann, wenn ich mit Datasets arbeiten und zu definieren, für meine ModifiedDateTime GetDate eingereicht werden (). Ich habe Funktion zurückzukehren mir einen Wert von GetDate () -Methode gespeichert, aber ich habe ein Problem zu Importverfahren, die bereits gerade Einheit Werte als Person zum Beispiel in meinem Fall bei allen Werten als int, string oder gar keinen Wert zurückgibt. Warum das?

Wie auch immer, es eine große Hilfe sein würde, wenn Sie mir helfen können die aktuelle Datetime aus dem Datenbankserver abgerufen werden.

War es hilfreich?

Lösung

Gibt es einen Grund, warum Sie einfach nicht drücken können, um Ihre Datenbank nach unten? Wenn Sie DateTime.Now in Ihrem Unternehmen Abfrage enthalten, wird es nach unten drücken (getdate) in die Datenbank.

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 ein besserer Weg, es zu tun?

Andere Tipps

Dies ist ein Update von @Nix Antwort auf EF4:

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

Ein Update für .net Core 2.0

var dual =  databaseContext
            .Set<Dual>()
            .FromSql("SELECT -1 AS Id, GETDATE() AS DateTime")
            .First();

Die gefälschte Einheit

public class Dual
{
    public int Id { get; set; }
    public DateTime DateTime { get; set; }
}

In VS 2008, wenn Sie eine Funktion Vorlage hinzufügen einen skalaren zurückzukehren, ist es nicht, den Code hinzufügen, um es zu nutzen machen einfach. Sie müssen die Funktionsvorlage direkt zugreifen - Ich verwende die partielle Klasse die notwendigen Methoden für einfache Bedienung zu bauen. Sie setzten diese in VS2010.

    public DateTime GetDateTime()
    {
        var returnValue = new DateTime();
        using (var connection = new EntityConnection(Connection.ConnectionString))
        {
            connection.Open();
            using (var command = connection.CreateCommand())
            {
                command.CommandText = "myStoredProc";
                command.CommandType = CommandType.StoredProcedure;
                try
                {
                    returnValue = Convert.ToDateTime(command.ExecuteScalar());
                }
                finally
                {
                    connection.Close();
                }
            }
        }
        return returnValue;
    }

Weitere Informationen: Funktion Import in Entity Model mit einem Nicht-Entity Rückgabetyp

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top