Verwendung der Standardwerte von Entity Framework und des Standarddatums

c# entity-framework

Frage

In meinem SQL Server-Datenbankschema habe ich eine Datentabelle mit einem Datumsfeld, das einen Standardwert von enthält

CONVERT(VARCHAR(10), GETDATE(), 111)

Dies ist ideal für das automatische Einfügen des Datums in den neuen Datensatz, wenn Datensätze manuell in die Datenbank eingegeben werden.

Mein Problem ist, dass das Entity Framework bei der Verwendung von Entity Framework und dem Zuordnen des Felds Date einen Standardwert von DateTime.Min einfügt, wenn die Entität instanziiert wird.

Ich kann das Date-Feld nicht auf ein nullwertbares DateTime, dh DateTime?, Abbilden, und ich kann weder CONVERT noch DateTime.Now.Today im Standardwert des Entity Designers verwenden, da es nur hart codierte konstante Werte akzeptiert.

Ich kann natürlich das DateTime-Feld in C # explizit festlegen, wenn das Objekt erstellt wird, entweder explizit im Code, im Konstruktor einer Teilklasse oder sogar während des Änderungsereignisses.

Gibt es andere Möglichkeiten, um das zu erreichen, was ich möchte, wo stattdessen die in der Datenbanktabelle gespeicherte Standardwertberechnung verwendet wird?

Akzeptierte Antwort

Ich bin nur darauf gestoßen - ich habe das Problem gelöst, indem ich im Konstruktor der Entity das Datum (das Feld, das ich automatisch generieren musste) mit einer partiellen Methode setzte. Ob dies ideal ist oder in allen Fällen funktioniert, ist noch abzuwarten, hat aber mein Problem bisher behoben.


Beliebte Antwort

Erstellen Sie eine Teilklasse für Ihr EntityObject, fügen Sie einen Standardkonstruktor hinzu und legen Sie darin Standardwerte fest.

    public partial class YourDBObject
    {
          public YourDBObject()
          {
               this._DateField = DateTime.Now;
          }
    }


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