在將整個系統從NH1.2升級到NH3.3的過程中。 系統中的一個常見場景(由以前的開發人員)是分離多個對象並將它們存儲在Web Session中,然後通過IHttpModule在每個請求上附加它們。NH3.3和附着分離物體
在一個簡單的頁面加載,運行NHProf,我注意到這些對象現在被連接正在觸發它們在數據庫中被更新,儘管它們沒有被改變。
以前的代碼(NH1.2)附加沿的線條:
if (((NHibernate.Impl.SessionImpl)session).IsSaved(obj) session.Lock(obj, LockMode.None)
因爲它似乎IsSaved已被刪除的代碼是現在:
if (obj != null) session.Lock(obj, LockMode.None)
我的理解是LockMode沒有人不應該導致數據庫更新。 一些對象有版本,其他則沒有。兩個正在更新。
任何意見表示讚賞。
難道這是鎖如果實際上應該做什麼,但通過IHttpModule關閉會話後,NH正在更新數據庫,就像先前分離的對象現在在會話中 - 儘管它們還沒有被更改過? – TheITGuy