Nhibernate在子集合更新时未检测到对父项的更改

时间:2016-06-22 07:59:58

标签: c# nhibernate orm fluent-nhibernate nhibernate-mapping

如何设置nhibernate,以便在调用session.Save()时,它将检测其集合的更改。

想要在子集合更改(插入,更新或删除)时更新父记录。

由于

2 个答案:

答案 0 :(得分:0)

您可以通过在集合定义上设置cascade属性来设置Nhibernate以保存子集合更改,这样您的集合映射将如下所示:

<bag name="Children" table="tblChildren" inverse ="true" cascade="all-delete orphan" lazy="true">
  <key column="ChildId"/>
  <one-to-many class="XXXX.Child, XXX"/>
</bag>

答案 1 :(得分:0)

父更改日期需要由业务逻辑处理。如果你明确地设置它,NH将保存它。如果在NHibernate事件或拦截器中设置更改日期,则会丢失,因为NH没有理由更新父级。

您实际上应该有一种处理父更改的服务。如果没有至少让这项服务知道,孩子们不会直接改变。此服务明确设置父级的更改日期。这是业务逻辑的一部分。