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 に答える