Nhibernate - item将其ParentID更新为null而不是删除

Adr*_*sky 8 c# nhibernate nhibernate-mapping

流程中的业务逻辑是:

  • 开始交易
  • 将项添加到集合中
  • 执行查找("somethingA")
  • 删除该项目取决于上一步骤.
  • 提交事务

即时通讯使用级联全删除,孤儿,和逆=真正的,无论是在我的父类.从集合中删除项目时,我设置.parentObj = null并从集合中删除该项目.

使用时TemplateFlushMode.Auto,我分析了数据库,并完成以下操作:

  • INSERT项目
  • SELECT相关的tosomethingA
  • 将Item的parentID(父级的FK)更新为NULL

(插入项目已完成,因为find()已完成,以保证数据库中的数据一致性).完成选择,然后我希望DELETE执行...但是更新parentID = null完成.

在执行Session.Flush()权限之前Find(),会发生以下情况:

  • INSERT项目
  • SELECT相关的tosomethingA
  • 删除项目

使用时TemplateFlushMode.Commit,更改将在事务结束时完成,并且永远不会插入项目:

  • SELECT相关的tosomethingA

我正在使用的应用程序正在使用TemplateFlushMode.Auto,所以我想知道,是否有一个解释为什么如果在一个项目之间添加一个选项并在同一个事务中删除之后,级联不起作用?

我知道第一个回答是"不要在集合中添加项目,如果之后将删除".但我宁愿不改变业务逻辑.

有谁知道为什么要进行更新而不是delete使用时AUTO?(使用Commit时不插入对象)

AYK*_*AYK 0

您使用的是双向一对多绑定吗?你在表not-null="true"中的外键上标注了吗details?您能否发布您的映射 XML 文件以便更好地理解?

我知道我还没有回答你的问题,但我没有足够的声誉来发表评论。