FluentNHibernate - Impostazione valore di default per le colonne DB (SQL Server)
-
21-09-2019 - |
Domanda
qualcuno conosce un modo in cui ho potuto impostare la mappatura attraverso il valore predefinito di una colonna in modo per esempio quando ho generare DB da mappature avrei DateTime colonna avendo getdate () come valore di default?
ho provato finora questo (sembra exactlly come quello che ho bisogno) ma non funziona
this.Map(x => x.LastPersistedOn, "DateModified")
.Access.Property()
.Default("getdate()");
Soluzione
Ho appena provato a installare alcuni valori di default e ha funzionato come previsto. Sto usando perfetto come recuperare dal Git del 24.05.2010 così aggiornare la vostra copia potrebbe risolvere il problema.
Mapping
public class SampleEntity
{
public virtual DateTime DateTimeProperty { get; set; }
}
Con
public class SampleEntityMap
: ClassMap<SampleEntity>
{
public SampleEntityMap()
{
Map(x => x.DateTimeProperty, "DateTimeColumn")
.Access.Property() //actually not necessary
.Not.Nullable()
.Default("getDate()");
}
}
questo produrrà il seguente SQL (da uscita alla console)
create table SampleEntity(
DateTimeColumn DATETIME default getDate() not null
)
-
Dom
Altri suggerimenti
Il modo per farlo è quello di assegnare la corrente DateTime nel codice anziché utilizzare il valore predefinito nel database. Poi trattarlo come una colonna normale. Sembrava un po 'strano per me in un primo momento provenienti da un disegno di sfondo model-driven, ma la gestione di valori di default a livello POCO è il modo DDD per farlo.
Sarebbe bello sentire le opinioni altrui troppo