2009-11-06 115 views
2

我有表3级深(QualificaionType有很多QualificationGroups,其中有诸多限制条件)的映射这样的层次结构:级联用nhibernate删除多个级别?

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

回答

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

我在每一个有错键列。