2009-10-15 10 views
6

weiß jemand einen Weg, wie ich durch Zuordnung der Standardwert einer Spalte so für z. Wenn ich DB aus Zuordnungen erzeuge, hätte ich die DateTime-Spalte mit getdate() als Standardwert?FluentNHibernate - Festlegen von Standardwert für DB-Spalten (SQL Server)

Ich habe versucht, so weit dies (sieht exactlly wie das, was ich brauche) aber es ist nicht

this.Map(x => x.LastPersistedOn, "DateModified") 
    .Access.Property() 
    .Default("getdate()"); 
+0

Ich habe das gleiche -
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()"); } } 

dieser wird die folgende SQL (von Ausgabe an die Konsole)

create table SampleEntity( DateTimeColumn DATETIME default getDate() not null ) 

produzieren Ausgabe in fließendem 1.0 und da nicht em eine Lösung zu sein - Sie können es durch Ereignisse tun, aber das ist nicht immer angemessen. Irgendjemand anderes? – row1

+0

möglich duplicate von [NHibernate + Standard getdate() Spalte] (http://stackoverflow.com/questions/1145197/nhibernate-default-getdate-column) –

Antwort

6

Ich habe versucht Einstellung einige Standardwerte nur zu hören, und es funktionierte wie erwartet. Ich benutze Fluent als read von Git am 24.05.2010, also kann die Aktualisierung Ihrer Kopie Ihr Problem lösen.
Dom

4

Die Art und Weise, dies zu tun funktioniert, um die aktuelle Datetime in Code zuweisen, anstatt Standardwert in der Verwendung Datenbank. Behandle es dann als normale Spalte. Es erschien mir ein bisschen komisch, zuerst von einem modellgetriebenen Design-Hintergrund zu kommen, aber die Standardwerte auf der POCO-Ebene zu verwalten, ist die DDD-Methode.

wäre gut, die Meinung anderer Nutzer zu

+1

Das Problem, das ich damit habe, ist es hängt von der Uhr des Benutzers ab. Wenn Sie kein Endbenutzer sind, wenn die Anwendung in zwei verschiedenen Zeitzonen läuft, ist es bereits kompliziert genug. – hometoast

+0

Etwas anderes, worüber man nachdenken sollte, sind vorhandene Daten. Ich weiß, dass dies ein alter Post ist, aber wenn Sie ein neues Feld zu einer bestehenden Klasse/Tabelle/Map hinzufügen, wollen Sie nicht immer den Standardwert haben, der normalerweise die Defaults wäre (zum Beispiel eine boolesche Spalte, die Sie wollen Der Standardwert ist in allen vorhandenen Datensätzen gültig. – DevTheo

Verwandte Themen