首先,这是我的关系
<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并使用AdditionalInfoRows正确加载Set。在我的应用程序中,我向此集添加了新的AdditionalInfoRows。然后我在ServiceStep上调用SaveOrUpdate。新addes AdditionalInfoRows正确保留,但我的原始列表丢失了连接。应该指向ServiceStep的AdditionalInfoRows中的FK由NHibernate设置为NULL。
希望有人能指出我正确的方向。
答案 0 :(得分: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>