2010-02-19 15 views
8

Sto spostando un progetto da SubSonic a NHibernate e sto usando Fluent NHibernate per eseguire tutte le nostre mappature. Il nostro schema db è abbastanza semplice e la maggior parte dei nostri casi sembra essere ben illustrata da diversi post del blog e codice di esempio disponibile.configurare Fluent NHibernate mapping per consentire solo INSERT?

Una cosa che non riesco a capire è tuttavia la possibilità di mappare una colonna in modo tale che il suo valore sia permesso solo di essere impostato sull'INSERTO iniziale dei dati. È un valore generato sul nostro livello di app e, una volta inserito, non vogliamo permettere che venga aggiornato ulteriormente.

ho provato l'ovvio (ma sbagliato)

Map(x => Foo).ReadOnly() 

Quale sarebbe la catena funzione appropriata per realizzare quello che sto cercando?

risposta

15

Dopo molte experimentation--

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

Appare di fare ciò che desidero - ma mi piacerebbe se le mani più esperte è intervenuto per confermare che la mia interpretazione dei risultati è accurato. odio segnare questo come la risposta e inavvertitamente inviare i futuri visitatori lungo la strada sbagliata.

+7

Questo è corretto. Inserisci e aggiorna entrambi come predefiniti su true, quindi affermando che la tua proprietà è "non aggiornabile" implica che sia ancora inseribile. Se si voleva solo l'aggiornamento, si farebbe 'Not.Insert()'; e se non si voleva né, si farebbe 'ReadOnly()'. –

+0

Cosa succede se provo ad aggiornare quella proprietà? Ho pensato che sarebbe stata lanciata un'eccezione, ma ho fatto alcuni test e mi sono felicemente aggiornato anche se l'ho impostato su .Not.Update(). Cosa mi manca? – Muxa

Problemi correlati