2010-08-27 11 views
9

Potrei mancare qualcosa, ma un database SQL Server 2008 R2 come generato da Entity Framework 4 non ha i valori predefiniti che ho configurato tramite la finestra di progettazione EF.Entity Framework 4 e valori predefiniti

Qualche idea su cosa potrei fare male?

risposta

12

Il motivo è perché i valori predefiniti che è possibile impostare nel modello concettuale e nelle impostazioni predefinite del database sono completamente indipendenti.
Consideriamo una situazione tipica in cui si dispone già di un database con valori predefiniti impostati su colonne, per lo stesso token, che il valore predefinito NON verrà rilevato nello schema del negozio o dall'entità stessa.

Pertanto, se si definisce un valore predefinito per una proprietà di un'entità in un modello che verrà utilizzato per generare uno schema di database, è importante tenere presente che nessuno dei valori predefiniti definiti per la proprietà di un'entità otterrà spinto al database.

Tuttavia, vale la pena ricordare che il modello di generazione di codice T4 EntityObject predefinito e il modello di entità POCO predefinite imposteranno entrambi il valore predefinito della proprietà nella classe generata.

È possibile verificare ciò dare un'occhiata più da vicino a yourModelName.edmx.sql file che è stato generato da VS2010 una volta che si fa clic su "Genera database da modello ...". Come si può vedere, c'è nessuna tale cosa come questa in esso:
Aggiungi vincolo DEFAULT "Valore predefinito" PER YourColumnName

+0

Grazie per la risposta concisa. Ha perfettamente senso. – Shaun

+0

Ha senso anche se rende le migrazioni di codice più difficili. Aggiungi un campo non annullabile a una tabella esistente, lo script di migrazione generato dal confronto tra i due schemi in SQL Studio non funzionerà. Deve essere fatto di nuovo manualmente. – simbolo