Я столкнулся с проблемой с NH (v2.1.2), все еще думая, что сессия грязная после того, как я обновил единственный объект, который был изменен в этом сеансе.
У меня есть родитель-> дочерние отношения, настроенные с помощью этого отображения следующим образом:
<set name="ChildItem" access="field.camelcase-underscore"
lazy="true"
cascade="save-update"
inverse="true">
<key column="PARENT_ITEM_KEY"/>
<one-to-many class="....ChildItem"/>
</set>
Вот шаги по воспроизведению проблемы:
1 - Создайте новый ChildItem и добавьте его в коллекцию Parent, но не сохраняйте его. Теперь session.IsDirty () возвращает true (как и ожидалось).
2 - Вызовите session.Refresh (родительский), чтобы отменить мои изменения. После обновления родительская коллекция теперь не содержит новый дочерний элемент (как и ожидалось).
3 - Теперь session.IsDirty () возвращает true - хотя я ожидал бы false, поскольку я обновил единственный измененный элемент.
Копаясь в SessionImpl через отладчик, я вижу, что у NH все еще есть ожидающая вставка для нового ChildItem в его ActionQueue.
Возможно ли в этом сценарии вернуть сеанс в состояние IsDirty () = false? Я не хочу отказываться от всей сессии для этого.
Любая помощь высоко ценится! Спасибо!