Как Nibernate определяет, следует ли вставлять или обновлять запись?

StackOverflow https://stackoverflow.com/questions/3660496

  •  01-10-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top