2009-11-06 144 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); 

我在每一個有錯鍵列。