Come utilizzare il Entity Framework predefinito e i valori di data predefiniti

c# entity-framework

Domanda

Nel mio schema di database di SQL Server ho una tabella di dati con un campo data che contiene un valore predefinito di

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

che è l'ideale per inserire automaticamente la data nel nuovo record quando si inseriscono manualmente i record nel database.

Il problema che ho è che quando si utilizza Entity Framework e si effettua il mapping del campo Data, che Entity Framework inserisce un valore predefinito di DateTime.Min quando l'entità viene creata un'istanza.

Non riesco a mappare il campo Data a un valore DateTime nullable, ad esempio DateTime ?, né sono in grado di utilizzare CONVERT o DateTime.Now.Today nel valore predefinito di Entity Designer poiché accetta solo valori costanti codificati.

Ovviamente, posso impostare in modo esplicito il campo DateTime in C # ogni volta che viene creato l'oggetto, esplicitamente nel codice, nel costruttore di una classe parziale o anche durante l'evento di salvataggio delle modifiche.

Esistono altri modi per ottenere ciò che voglio in cui viene effettivamente utilizzato il calcolo del valore predefinito memorizzato nella tabella del database?

Risposta accettata

Mi sono imbattuto in questo - ho lavorato attorno ad esso impostando la data (il campo che avevo bisogno di generare automaticamente) nel costruttore dell'Entity usando un metodo parziale. Se questo è Ideale o se funziona in tutti i casi deve ancora essere visto, ma ha risolto il mio problema finora.


Risposta popolare

Crea una classe parziale per EntityObject, aggiungi un costruttore predefinito e imposta i valori predefiniti in esso.

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


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché