2010-02-19 4 views
8

Ich bewege ein Projekt von SubSonic nach NHibernate und verwende Fluent NHibernate, um all unser Mapping durchzuführen. Unser db-Schema ist ziemlich geradlinig und die meisten unserer Fälle scheinen bis jetzt durch verschiedene Blogposts und Beispielcode, die verfügbar sind, gut illustriert zu werden.Fluent NHibernate-Zuordnung konfigurieren, um nur INSERT zuzulassen?

Eine Sache, die ich jedoch nicht herausfinden kann, ist die Fähigkeit, eine Spalte so zuzuordnen, dass ihr Wert nur beim ersten EINFÜGEN der Daten gesetzt werden darf. Es ist ein generierter Wert auf unserer App-Ebene. Sobald er eingefügt wurde, möchten wir nicht zulassen, dass er weiter aktualisiert wird.

habe ich versucht, die offensichtliche (aber falsch)

Map(x => Foo).ReadOnly() 

Was die entsprechende Funktionskette wäre zu tun, was ich nach?

Antwort

15

Nach viel experimentation--

Map(u => Foo).Not.Update(); 

Erscheint tun werden, was ich will - aber ich würde gerne, wenn erfahrene Hände zustimmend, um zu bestätigen, dass meine Interpretation der Ergebnisse korrekt sind. Ich würde es hassen, dies als die Antwort zu markieren und versehentlich zukünftige Besucher auf den falschen Weg zu schicken.

+7

Das ist richtig. Fügen Sie beide Standardwerte in true ein und aktualisieren Sie sie. Wenn Sie also sagen, dass Ihre Eigenschaft "nicht aktualisierbar" ist, bedeutet dies, dass sie noch eingefügt werden kann. Wenn Sie nur aktualisieren möchten, würden Sie 'Not.Insert()'; und wenn Sie keine wollten, würden Sie 'ReadOnly()' tun. –

+0

Was passiert, wenn ich versuche, diese Eigenschaft zu aktualisieren? Ich nahm an, dass eine Ausnahme ausgelöst wird, aber ich habe einige Tests durchgeführt und es wird erfreulicherweise aktualisiert, obwohl ich es auf .Not.Update() eingestellt habe. Was vermisse ich? – Muxa

Verwandte Themen