我有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);
当我删除资格组时,它会删除与其相关的所有资格。但是当我尝试删除资格类型时,它会尝试删除所有相关的资格组,但不会删除其资格。
如何让它一直向下级联,这样如果我删除一个类型,它会删除所有组及其所有资格?我是否需要先遍历所有组并删除它们?看来这应该只能通过映射来处理。
仅供参考,我正在使用Fluent NHibernate 1.0RTM和NHibernate 2.1
答案 0 :(得分: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);
每个键都有错误的键列。