Как NHibernate определяет, вставить или обновить запись? - PullRequest
4 голосов
/ 07 сентября 2010

При использовании Session.SaveOrUpdate(myEntity); как NHibernate решает, как вставить новую запись или обновить существующую?

У меня проблемы с сохранением одного объекта в проекте S # arp. Он извлекается из хранилища, затем сохраняется в состоянии сеанса для нескольких веб-запросов, затем сохраняется обратно в базу данных с одним измененным свойством (не S # arp [DomainSignature]).

Во время выполнения я сравнил объект, который должен быть сохранен, со свежо извлеченной версией прямо из базы данных, используя метод Equals() и возвращает true. Тем не менее, объект по-прежнему создает новую строку в базе данных.

В других местах приложения это работает нормально, но я надеюсь на указатель того, как NHib работает с этим.

1 Ответ

2 голосов
/ 07 сентября 2010

В основном SaveOrUpdate() ищет идентификатор. Если идентификатор присутствует, он обновит запись в базе данных. Если идентификатор отсутствует, он создаст новую запись.

Тем не менее, звучит так, будто у вас может быть что-то необычное в вашей сессии. Возможно, вы захотите попробовать SaveOrUpdateCopy(), чтобы увидеть, решит ли это вашу проблему.

...