使用单向多对多映射进行删除级联

时间:2009-12-30 13:22:01

标签: fluent-nhibernate many-to-many

我正在使用Fluent和NHibernate。 我有两个对象说A& B与它们之间具有多对多的关系。 我在A HasMany B中使用单向多对多映射。 B中没有关于A(单向)的参考。

这在数据库中创建了第三个表(名为ABMapping),该表具有与A& A的主键相关的两列。乙

如果删除对象A,则删除与A相关的ABMapping表中的条目。那很酷。

但是,现在我无法删除对象B,因为它有一个FK约束。如何进行设置以便在删除B时,ABMapping中与B相关的所有条目都会自动删除?

1 个答案:

答案 0 :(得分:1)

如果B没有引用A,则它不知道映射表,因此它不能级联删除。在我看来,你有两个选择:

  1. 使用FK或触发器上的级联删除,在数据库中级联删除。
  2. 将关系从B映射到A;您不必将其公开给您的类的使用者,可以使用访问策略将A集合映射为私有字段。我总是为集合做这个(使用.Access.CamelCaseField(Prefix.Underscore)),这样我就不暴露IList。