NHibernate 最有特色的一個機制就是「Session」,一般來說我們透過NHibernate 做CRUD 都是對Session進行操作,
這邊不深入探討「Session」底層是如何運作的,有興趣可以參考這篇文章!
這篇文章是要探討Session 與 LazyLoading 共同運作下所發生什麼問題。
NHibernate 最有特色的一個機制就是「Session」,一般來說我們透過NHibernate 做CRUD 都是對Session進行操作,
這邊不深入探討「Session」底層是如何運作的,有興趣可以參考這篇文章!
這篇文章是要探討Session 與 LazyLoading 共同運作下所發生什麼問題。
產品會使用NHibernate 的Lazy Loading來找尋關聯資料,
但如果沒有資料的時候就會拋出 NHibernate.ObjectNotFoundException,
是因為NHibernate 底層預設是找不到資料時會 throw Excetion 出來,這會讓我們在操作上有很大的困擾,
如下圖:
今天產品發現NHibernate Session Update 失效了,查了很久發現是我們在Service Layer 的 Aop Transaction 失效了,
導致Load 出來的物件沒有被掛上Proxy ,進一步影響NHibernate 無法監控物件是否有被異動。
最近在做產品的產品,底層是使用NHibernate,Review 時發現同仁在 Update Table 有一些多餘的寫法,