FluentNHibernate - Valeur par défaut Définition des colonnes DB (SQL Server)
-
21-09-2019 - |
Question
personne ne sait de façon comment je pourrais mettre à travers la cartographie de la valeur par défaut d'une colonne ainsi pour exemple quand je produis DB à partir mappings je devrais DATETIME avoir getdate () comme valeur par défaut?
J'ai essayé jusqu'à présent cette (ressemble exactlly comme ce que j'ai besoin), mais il ne fonctionne pas
this.Map(x => x.LastPersistedOn, "DateModified")
.Access.Property()
.Default("getdate()");
La solution
Je viens essayé de placer des valeurs par défaut et cela a fonctionné comme prévu. J'utilise Fluent comme récupérer de l'Git 24.05.2010 mise à jour afin que votre copie peut résoudre votre problème.
Cartographie
public class SampleEntity
{
public virtual DateTime DateTimeProperty { get; set; }
}
public class SampleEntityMap
: ClassMap<SampleEntity>
{
public SampleEntityMap()
{
Map(x => x.DateTimeProperty, "DateTimeColumn")
.Access.Property() //actually not necessary
.Not.Nullable()
.Default("getDate()");
}
}
ce qui produira l'instruction SQL suivante (à partir de la sortie de la console)
create table SampleEntity(
DateTimeColumn DATETIME default getDate() not null
)
-
Dom
Autres conseils
La façon de le faire est d'attribuer le DateTime en cours dans le code plutôt que d'utiliser la valeur par défaut dans la base de données. Ensuite, le traiter comme une colonne normale. Semblait un peu étrange pour moi d'abord venir d'un arrière-plan de la conception basée sur des modèles, mais la gestion des valeurs par défaut au niveau POCO est le moyen DDD de le faire.
Ce serait bien d'entendre les opinions des autres aussi