Почему NHibernate не понимает, что мой доменный объект нуждается в обновлении, а не вставке? - PullRequest
0 голосов
/ 14 июля 2010

У меня есть веб-страница, которая использует NHibernate для загрузки объекта домена.Состояние объекта затем сохраняется в элементах управления страницы, и когда пользователь нажимает кнопку «Сохранить», создается новый объект, и его свойства (включая идентификатор) заполняются из элементов управления страницы.Затем я вызываю session.Save () для объекта.

Для меня это означает, что NHibernate должен использовать UPDATE, а не INSERT, потому что свойство Id установлено и отличается от unssaved-value.Тем не менее, NHibernate пытается вставить его.

Я включил часть файла сопоставления, связанную с идентификатором ниже:

<id name="Id" column="StoredWillId" unsaved-value="0">
  <generator class="native" />
</id>

Кто-нибудь может объяснить, что здесь происходит?

Спасибо

Дэвид

1 Ответ

3 голосов
/ 14 июля 2010

Вызовите сеанс. SaveOrUpdate (). session.Save () вставляет, session.Update () обновляет, session.SaveOrUpdate () сохраняет, если Id равен 0, в противном случае обновляет.

...