我正在尝试使用 StatelessSession 批量更新实体。
因为它是无状态的,NHibernate 不会在保存时自动级联子实体。
这很好,因为我不想对任何子实体进行任何更改。
不幸的是,保存后,NHibernate 抱怨:
“对象引用了未保存的瞬态实例 - 在刷新之前保存瞬态实例。类型:MyAssembly.MyRandomEntity,实体:Castle.Proxies.MyRandomEntityProxy”
当然,如果我尝试更新子实体,我会收到错误消息:
“没有持久性:Castle.Proxies.MyRandomEntityProxy”
如您所见,子实体是一个代理,因为它尚未加载。我不需要它,我不想更新它……但即使我这样做了,我也不确定我该怎么做。
知道如何解决这个问题,基本上告诉它忽略瞬态子实体吗?
更新
这是父对象上子实体的映射:
<many-to-one class="MyAssembly.Flight, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="OutboundFlight">
<column name="OutboundFlightId" />
</many-to-one>
这是子实体上的 Id 列:
<id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" unsaved-value="0">
<column name="FlightId" />
<generator class="assigned" />
</id>