NHibernate可以流畅配置,以便在其引用设置为null时删除子项吗?

时间:2010-06-22 13:59:45

标签: nhibernate fluent-nhibernate nhibernate-mapping

我听说这也可以用触发器来完成,但如果可以的话,我宁愿不去那条路。现在,似乎将对子对象的引用归零只是将它们孤立在数据库中,这至少不是理想的说法。

谢谢!

2 个答案:

答案 0 :(得分:7)

您可以设置级联选项以删除孤儿:

HasMany(x => x.Children).KeyColumn("ParentId").AsBag().Inverse()
    .Cascade.AllDeleteOrphan();

要完成这项工作,您需要从父集合中删除子对象并刷新会话:

using (var txn = session.BeginTransaction())
{
    parent.Children.Remove(child);
    txn.Commit();
}

答案 1 :(得分:0)

我这里没有Fluent.NH,但我知道您可以为映射指定级联类型。将它设置为all-delete-orphan可以做你想要的。

如果您使用基于约定的配置,这应该为您提供一个起点..

Cascade Saves with Fluent NHibernate AutoMapping