级联删除与NHibernate多层次?
-
18-09-2019 - |
题
我表3级深(QualificaionType有许多QualificationGroups,其中有许多资格)的层次结构映射是这样的:
// QualificationType
HasMany(x => x.QualificationGroups)
.Inverse()
.KeyColumns.Add("QualificationGroupId")
.AsBag()
.Cascade.AllDeleteOrphan()
.Access.CamelCaseField(Prefix.Underscore);
// Qualification Group
HasMany(x => x.Qualifications)
.Inverse()
.KeyColumns.Add("QualificationId")
.AsBag()
.Cascade.AllDeleteOrphan()
.Access.CamelCaseField(Prefix.Underscore);
当我删除资格组,它删除有关的所有资格。但是,当我尝试删除资格类型,它会尝试删除所有相关的资格认证团体,但不是他们的资格。
我怎样才能得到它级联一路下跌,这样,如果我删除一个类型,它删除所有组和所有的资格?我需要遍历所有组第一和删除它们?看来这应该是能够通过映射单独处理。
仅供参考,我使用的功能NHibernate 1.0RTM和NHibernate 2.1
解决方案
我想通了......映射是不正确的。
它们应该是这样的:
// QualificationType
HasMany(x => x.QualificationGroups)
.Inverse()
.KeyColumn("QualificationTypeId")
.AsBag()
.Cascade.AllDeleteOrphan()
.Access.CamelCaseField(Prefix.Underscore);
// Qualification Group
HasMany(x => x.Qualifications)
.Inverse()
.KeyColumn("QualificationGroupId")
.AsBag()
.Cascade.AllDeleteOrphan()
.Access.CamelCaseField(Prefix.Underscore);
我在每个有错误键列。
不隶属于 StackOverflow