2

我有一个 3 级深的表层次结构(QualificaionType 有许多 QualificationGroups,它们有许多 Qualifications)映射如下:

// 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

4

1 回答 1

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

我在每个中都有错误的键列。

于 2009-11-06T15:48:36.937 回答