次のようにマッピングされた 3 レベルの深さのテーブルの階層があります (QualificationType には多くの Qualifications を持つ多くの 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);
資格グループを削除すると、それに関連するすべての資格が削除されます。しかし、資格タイプを削除しようとすると、関連するすべての資格グループが削除されますが、それらの資格は削除されません。
タイプを削除すると、すべてのグループとそのすべての資格が削除されるように、カスケードするにはどうすればよいですか? 最初にすべてのグループをループして削除する必要がありますか? これは、マッピングだけで処理できるはずです。
参考までに、Fluent NHibernate 1.0RTM と NHibernate 2.1 を使用しています。