我表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);

我在每个有错误键列。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top