首先,这是我的关系
<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。
希望有人能指出我正确的方向。