【发布时间】:2011-10-19 01:44:12
【问题描述】:
在我刷新了在该会话中修改的唯一实体后,我仍然认为该会话是脏的 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(parent) 来恢复我的更改。刷新后,父项的集合现在不包含新的子项(如预期的那样)。
3 - 现在 session.IsDirty() 返回 true - 虽然我希望是 false,因为我已经刷新了唯一被修改的项目。
通过调试器深入了解 SessionImpl,我可以看到 NH 在它的 ActionQueue 中仍有新 ChildItem 的待处理插入。
在这种情况下是否可以将会话返回到 IsDirty()=false 状态?我不想为此放弃整个会话。
非常感谢任何帮助!谢谢!
【问题讨论】:
标签: c# nhibernate