Мы пытаемся объединить объекты после того, как было создано исключение StaleObjectStateException, чтобы сохранить объединенную копию.
Вот наша ситуация с окружающей средой:
Пример использования:
Мы хотим корректно обработать исключение. Поскольку пользователи разделяют владение родительским элементом, Пользователь 1 должен иметь возможность успешно сохранять и сохранять родительский элемент вместе с его новым дочерним элементом и дочерним элементом пользователя 2.
Когда вызывается SOSE, согласно Айенде ( http://msdn.microsoft.com/en-us/magazine/ee819139.aspx ):
ваш сеанс и его загруженные объекты всплывают. , потому что с NHibernate исключение, выброшенное из сеанса, переводит этот сеанс в неопределенное состояние.Вы больше не можете использовать этот сеанс или какие-либо загруженные объекты
C1 уже был назначен идентификатор и номер версии в сеансе, который сейчас не используется. (Хотелось бы, чтобы этого не было.)
Как совместить использование ISession.Merge () и ISession.Refresh (), чтобы получить только что сохраненного Родителя, у которого есть как C1, так и C2?
Мы попробовали количество тайных перестановок, ни одна из которых не работает полностью. Обычно либо «строка была обновлена или удалена другой транзакцией (или отображение несохраненных значений было неверным», либо фактическая коллизия идентификаторов на уровне ODBC.
] Наша теория на данный момент:
Однако вся документация предполагает, что newSession.Merge предполагается как достаточно.
Другие сообщения, использованные в качестве исследования:
Fluent NHibernate Newbie: строка была обновлена или удалена другой транзакцией
Есть ли альтернатива ISession.Merge (), которая не срабатывает, когда используя оптимистичную блокировку g?
Строка StaleObjectstateException была обновлена или удалена
Как я могу указать NHibernate сохранять только измененные свойства
Hibernate (JPA): как обработать StaleObjectStateException, когда несколько объектов были изменены и зафиксированы (java , но, думаю, актуально)