【问题标题】:cascade delete multiple levels with nhibernate?使用nhibernate级联删除多个级别?
【发布时间】:2010-12-13 21:03:12
【问题描述】:

我有一个 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

【问题讨论】:

    标签: nhibernate cascading-deletes


    【解决方案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);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多