NHibernate使用inverse =" true"

时间:2016-10-10 10:12:15

标签: asp.net-mvc nhibernate parent-child nhibernate-mapping

我有一个ASP MVC Web应用程序我正在努力解决突然发生的NHibernate问题。

让我们首先看看我的映射,标准的父子映射:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="IWA.Model" assembly="IWA.Model">
<class name="Parent" table="Parent" lazy="false">

<id name="Id" column="IdParent"  >
  <generator class="identity" />
</id>

<bag name="Children" table="Child" cascade="delete" inverse="true">
  <key column="IdParent" />
  <one-to-many class="Child" />
</bag>

</class>
</hibernate-mapping>

儿童

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="IWA.Model" assembly="IWA.Model">
<class name="Child" table="Child" lazy="false">

<id name="Id" column="Id"  >
  <generator class="identity" />
</id>

<property name="Text" column="Text" />

<many-to-one name="Parent" column="IdParent" class="Parent" />

    

现在出现问题:

我在一个ActionResult中有多个保存语句,例如:

var parent = _service.GetParent(id);

_service.SaveChild{ Text = "Save1", Parent = parent };
_service.SaveChild{ Text = "Save2", Parent = parent };

当我运行这个时,我在NHProf中看到2个插入,在第2个插入后看到1个更新,所以基本上第一个孩子用第二个子进行更新。这导致有2个孩子使用文本Save2。

为什么会这样?我该如何防止这种情况?

*注意:我在同一个父母中有其他没有这种行为的儿童收藏品,非常奇怪......

0 个答案:

没有答案