nhibernate不会级联删除子项
方案如下,
我有3个对象(我简化名称)名为Parent,parent的child和child的孩子
父母的孩子是父母的集合,孩子的孩子是孩子的集合。
映射如下(相关部分)
亲
父母的孩子
我想要实现的是,当我删除父母时,会有一个级联删除一直到孩子的孩子。 但目前发生的是这个。
(这纯粹用于映射测试目的)获取父实体(工作正常)
IQuery query = session.CreateQuery("from Parent where ID =" + ID); IParent doc = query.UniqueResult();
现在删除部分
session.Delete(doc); transaction.Commit();
在使用级联和反向解决了“无法插入空值”错误之后,我希望现在可以使用此代码删除所有内容,但只删除父项。
我错过了可能错过的映射中的某些内容吗? 任何正确方向的提示都非常受欢迎!
迭戈,谢谢你的回答。 (和解释)
我去除了on-delete="cascade"
,这是因为我喜欢在代码中尽可能多地控制而不是在数据库中。
下面发布的代码是(工作)结果。
亲
父母的孩子
希望这可以帮助人们解决同样的问题!
通过在键上设置on-delete="cascade"
,您可以让DB处理级联。
您是否使用NHibernate生成架构?
我刚刚复制了你的例子,它在有和没有属性的情况下运行良好。 删除它时,NHibernate会进行级联。
顺便说一句,使用lazy="false" fetch="subselect"
不是你应该默认做的事情。 如果删除这些属性,请保留on-delete="cascade"
并将cascade
更改为save-update
,您只需要两个查询来检索和删除Parent。
上述就是C#学习教程:nhibernate不会级联删除子项分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/959408.html