2010-02-19 18 views
8

Przenoszę projekt z SubSonic do NHibernate i korzystam z Fluent NHibernate, aby wykonać wszystkie nasze mapowanie. Nasz schemat db jest dość prosty i większość naszych spraw wydaje się być dobrze zilustrowana przez różne posty na blogu i przykładowy kod, który jest dostępny.skonfigurować mapowanie Fluent NHibernate, aby zezwolić tylko na INSERT?

Jedną z rzeczy, których nie jestem w stanie wymyślić, jest możliwość odwzorowania kolumny tak, że jej wartość może być ustawiona tylko na początkowym WSTAWIE danych. Jest to wartość generowana na warstwie aplikacji, a po wstawieniu nie chcemy jej dalej aktualizować.

Próbowałem oczywiste (ale źle)

Map(x => Foo).ReadOnly() 

Jaki byłby odpowiedni łańcuch funkcja aby osiągnąć to, co jestem po?

Odpowiedz

15

Po wielu experimentation--

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

Pojawia się robić to, co pragnę - ale chciałbym, jeśli bardziej doświadczone ręce dzwoniły w celu potwierdzenia, że ​​moja interpretacja wyników jest dokładne. Nie chciałbym oznaczyć tego jako odpowiedzi i nieumyślnie wysłać przyszłych odwiedzających na złą drogę.

+7

Zgadza się. Wstaw i Aktualizuj zarówno domyślne jak i prawdziwe, więc mówiąc, że twoja własność jest "nie aktualizowalna", oznacza, że ​​nadal można ją wstawić. Jeśli chciałbyś tylko aktualizację, zrobiłbyś 'Not.Insert()'; a gdybyś nie chciał żadnego, zrobiłbyś "ReadOnly()". –

+0

Co się stanie, jeśli spróbuję zaktualizować tę właściwość? Założono, że wyjątek zostanie zgłoszony, ale wykonałem kilka testów i na szczęście zaktualizowałem je, mimo że ustawiłem na .Not.Update(). Czego mi brakuje? – Muxa

Powiązane problemy