我已成功编写了一个系统,其中包含带有子订单行的订单,使用订单中的级联更新来保存订单行.在下一次迭代中,我想将订单行与一个发货类相关联.这似乎很简单 - 将一个可以为空的DespatchID列添加到订单行表中,作为Despatch表的foriegn键.但是,当我将其添加到映射并使用未在订单行上设置的调度保存订单对象时,我得到错误"对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例".
如果我删除订单行和发货之间的关联,它会保存好.我只能假设错误是由于它试图保存不存在的发送而引起的.
以下是映射(订单行类称为OrderProductAmount):
<class name="NHS.WebTeam.PandemicFluDistribution.Order, NHS.WebTeam.PandemicFluDistribution" table="[Order]" lazy="false" optimistic-lock="version" where="Deleted=0" >
<id name="ID" type="Int32" column="OrderID" unsaved-value="0">
<generator class="hilo">
<param name="table">NHibernateHiLo</param>
<param name="column">NextValue</param>
<param name="max_lo">100</param>
</generator>
</id>
<version column="version" name="Version"/>
<property name="Deleted" column="Deleted" />
<property name="DateEntered"></property>
<property name="RequiredDeliveryDate"></property>
<many-to-one name="Practice" column="PracticeID"></many-to-one>
<set name="OrderProductAmounts" access="field.camelcase-underscore" inverse="true" cascade="all-delete-orphan" lazy="true">
<key column="OrderID"></key>
<one-to-many class="NHS.WebTeam.PandemicFluDistribution.OrderProductAmount, PandemicFluDistribution" />
</set>
</class>
<class name="NHS.WebTeam.PandemicFluDistribution.OrderProductAmount, NHS.WebTeam.PandemicFluDistribution" table="OrderProductAmount" lazy="false" optimistic-lock="version" where="Deleted=0" >
<id name="ID" type="Int32" column="OrderProductAmountID" unsaved-value="0">
<generator class="hilo">
<param name="table">NHibernateHiLo</param>
<param name="column">NextValue</param>
<param name="max_lo">100</param>
</generator> …Run Code Online (Sandbox Code Playgroud)