Как Nibernate определяет, следует ли вставлять или обновлять запись?
-
01-10-2019 - |
Вопрос
Когда используешь Session.SaveOrUpdate(myEntity);
Как Nibernate решает, как ли вставить новую запись или обновить существующий?
У меня проблемы с сохранением одного объекта в проекте S # ARP. Он извлекается из хранилища, затем сохраняется в состоянии сеанса для нескольких веб-запросов, а затем сохраняется обратно в базу данных с одним измененным свойством (не S # ARP [DomainSignature]
).
У меня во время выполнения сравнивают объект, который собирается сохраняться со свежепринесенной версией прямо из базы данных, используя Equals()
метод, и это возвращает true. Тем не менее, объект все еще заканчивается созданием новой строки в базе данных.
В другом месте в приложении это работает нормально, но я надеюсь на указатель на то, насколько nib не работает.
Решение
В принципе SaveOrUpdate()
ищет идентификатор. Если идентификатор присутствует, он будет обновлять запись в базе данных. Если идентификатор нет, он создаст новую запись.
Тем не менее, звучит так, будто у вас может быть что-то в наличии в вашей сессии. Возможно, вы захотите попробовать SaveOrUpdateCopy()
Чтобы увидеть, решает ли это вашу проблему.