2010-02-19 5 views
8

Je suis en train de transférer un projet de SubSonic à NHibernate et j'utilise Fluent NHibernate pour effectuer tout notre mapping. Notre schéma db est assez simple et la plupart de nos cas semblent jusqu'à présent être bien illustrés par différents articles de blog et exemples de code disponibles. Une chose que je n'arrive pas à comprendre est cependant la possibilité de mapper une colonne afin que sa valeur ne soit autorisée que sur l'INSERT initial des données. C'est une valeur générée sur notre niveau d'application, et une fois insérée, nous ne voulons pas permettre qu'elle soit mise à jour davantage.Configurer un mappage NHibernate fluide pour autoriser INSERT uniquement?

J'ai essayé l'évidence (mais mal)

Map(x => Foo).ReadOnly() 

Quelle serait la chaîne de fonction appropriée pour accomplir ce que je suis après?

Répondre

15

Après beaucoup experimentation--

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

Apparait à faire ce que je veux - mais j'aimerais si plus des mains expérimentées pour confirmer sonnaient que mon interprétation des résultats est exacte. Je détesterais marquer cela comme la réponse et par inadvertance envoyer les futurs visiteurs sur le mauvais chemin.

+7

C'est correct. Insérer et mettre à jour les deux par défaut à true, donc en disant que votre propriété est "non modifiable" implique qu'elle est toujours insérable. Si vous vouliez mettre à jour seulement, vous feriez 'Not.Insert()'; et si vous ne le vouliez pas non plus, vous feriez ReadOnly() '. –

+0

Qu'arrivera-t-il si j'essaie de mettre à jour cette propriété? J'ai supposé qu'une exception serait levée, mais j'ai fait quelques tests et il se met à jour heureusement même si je l'ai mis à .Not.Update(). Qu'est-ce que je rate? – Muxa

Questions connexes