0

首先,这是我的关系

<class name="ServiceStep">
<id name="Id">
  <generator class="guid.comb"/>
</id>
 <set name="AdditionalInfoRows" cascade="save-update" >
  <key column="ServiceStepId"/>
  <one-to-many class="AdditionalInfoRow"/>
</set>

<class name="AdditionalInfoRow">
<id name="Id">
  <generator class="guid.comb"/>
</id>
<set name="AdditionalInfos" cascade="save-update" >
  <key column="AdditionInfoRowId"/>
  <one-to-many class="AdditionalInfo"/>
</set>

现在,当我创建新的 ServiceStep 并将 AdditionalInfoRows 添加到其中时,一切正常并且正确持久。

问题在于更新。我加载 ServiceStep 并且 Set 正确加载了 AdditionalInfoRows。在我的应用程序中,我将新的 AdditionalInfoRows 添加到该集合中。然后我在 ServiceStep 上调用 SaveOrUpdate。新添加的 AdditionalInfoRows 已正确保留,但我的原始列表失去了连接。应该指向 ServiceStep 的 AdditionalInfoRows 中的 FK 被 NHibernate 设置为 NULL。

希望有人能指出我正确的方向。

4

1 回答 1

0

AdditionalInfoRow您可以尝试在映射中包含这样的内容:

<many-to-one name="ServiceStep" class="ServiceStep">
  <column name="ServiceStepId" not-null="true"/>
</many-to-one>

看起来像,

<class name="AdditionalInfoRow">
    <id name="Id">
        <generator class="guid.comb"/>
    </id>
    <set name="AdditionalInfos" cascade="save-update" >
    <key column="AdditionInfoRowId"/>
        <one-to-many class="AdditionalInfo"/>
    </set>
    <many-to-one name="ServiceStep" class="ServiceStep">
        <column name="ServiceStepId" not-null="true"/>
    </many-to-one>
</class>
于 2013-02-15T13:22:02.020 回答