我試圖批量更新使用StatelessSession的實體。當使用NHibernate StatelessSession時更新實體並忽略子代理
因爲它是無狀態的,NHibernate在保存時不會自動級聯子實體。
這很好,因爲我不想對任何子實體進行任何更改。
不幸的是,在保存,NHibernate的抱怨:
「對象引用一個未保存的瞬態的實例 - 沖洗之前保存的瞬態的實例類型:MyAssembly.MyRandomEntity,實體:Castle.Proxies.MyRandomEntityProxy。」
中當然,如果我嘗試更新的子實體,我得到的錯誤:
「沒有留存爲:Castle.Proxies.MyRandomEntityProxy」
正如你所看到的,孩子實體是代理becau它尚未加載。我不需要它,我不想更新它......但即使我做了,我也不知道我該怎麼做。
任何想法如何解決這個問題,基本上告訴它忽略瞬態子實體?
更新
這裏是父對象對孩子實體的映射:
<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>
爲什麼代理服務器暫態?如果在檢索它時創建它,那麼unsavedvalue的映射不正確。否則,誰在創造它? – Firo
檢索時必須創建,我沒有觸及它。映射怎麼會出錯?我使用的是Fluent Nhibernate,並沒有對該子實體的映射做任何具體的操作。 –
「MyRandomEntity」的id映射是怎樣的? – Firo