FluentNHibernate - Einstellung Standardwert für DB Spalten (SQL Server)
-
21-09-2019 - |
Frage
kennt jemand eine Möglichkeit, wie ich den Standardwert einer Spalte Mapping gesetzt durch könnte so für z.B. wenn I erzeugen DB von Mappings würde ich DATETIME- Säule mit GETDATE () als Default-Wert?
Ich habe versucht, so weit dieses (Aussehen exactlly wie das, was ich brauche), aber es funktioniert nicht
this.Map(x => x.LastPersistedOn, "DateModified")
.Access.Property()
.Default("getdate()");
Lösung
Ich habe gerade versucht, einige Standardwerte gesetzt und es hat funktioniert wie erwartet. Ich bin mit Fluent als von Git abrufen der 24.05.2010 um Ihre Kopie zu aktualisieren kann Ihr Problem lösen.
Mapping
public class SampleEntity
{
public virtual DateTime DateTimeProperty { get; set; }
}
Mit
public class SampleEntityMap
: ClassMap<SampleEntity>
{
public SampleEntityMap()
{
Map(x => x.DateTimeProperty, "DateTimeColumn")
.Access.Property() //actually not necessary
.Not.Nullable()
.Default("getDate()");
}
}
das wird die folgende SQL (von Ausgabe an die Konsole)
produzierencreate table SampleEntity(
DateTimeColumn DATETIME default getDate() not null
)
-
Dom
Andere Tipps
Die Art und Weise, dies zu tun ist, um die aktuelle Datetime in Code zuweisen, anstatt Standardwert in der Datenbank. Dann behandeln sie wie eine normale Spalte. Scheint mir ein wenig seltsam auf dem ersten von einem modellgetriebenen Designhintergrund kommen, aber die Standardwerte an der POCO Ebene der Verwaltung ist der DDD Weg, es zu tun.
Wäre gut für andere Meinungen zu hören zu