我想創建一個持久對象圖的克隆,它似乎像Session.Evict(PersistedObject)是這樣做的方式。通過從Session緩存中刪除實例,我可以將其設置爲新的「克隆」記錄。必須Nhibernate Session.Evict()作用於代理對象嗎? (或者是有克隆持久對象圖的替代方法?)
我嘗試了三種方法,每種方法都不成功。
- 使用急切加載從數據庫中獲取我的對象圖並嘗試將其退出。這會導致KeyNotFoundException異常
- 使用Session.Load(objectId)並嘗試將其驅逐出去。 Evict的作品,但我只有一個代理工作,而不是我需要的水合物體
- 使用Session.Get(objectId)並嘗試將它驅除。這導致KeyNotFoundException
我一直在努力尋找關於此主題的任何真實文檔或示例。我發現了一些接近,但沒有真正解釋了我要去哪裏錯了
- NHibernate Session.Evict()
- NHibernate evict by id
- http://thecuttingledge.com/?tag=nhibernate#.V1XQHZF96M8
- How do I copy an object with NHibernate
- https://sonyarouje.com/2013/11/13/keynotfoundexception-from-nhibernates-session-evict/
隨着關於最後一個鏈接,我檢查了我的Equals和GetHashC ode方法,但在調用Evict時不會受到影響。另外,Session.Contains(objectToBeEvicted)在Evict之前返回true()
至於標題中的第二個問題 - 是否有更好的方法來解決這個問題?這不可能是這樣一個難得的場景
在此先感謝
謝謝,我會看看 –