我使用的是與NHibernate的ASP.NET MVC2,但我面臨一個問題。所有通過NHibernate調用數據庫應該在事務中,但是在一些情況下,視圖內的代碼會啓動數據庫調用。因此,需要能夠在視圖渲染後提交事務。ASP.NET MVC:查看後運行代碼已呈現(關閉數據庫事務)
例如顯示用戶和他們的用戶角色的列表,你可以使用此代碼顯示用戶角色:<%:Model.UserRole.Name%>
這將導致數據庫作爲的UserRole上一炮打響使用NHibernate代理加載。
您可以在這種情況下熱切地獲取UserRole來避免這個問題,但有些情況下使用延遲加載會快得多。
無論如何,有沒有辦法在視圖渲染後運行代碼?
我真的不明白爲什麼調用對象模型會擊中分貝它擊敗了MVC的全部目的。你能從你的控制器提供一些代碼嗎? – 2010-03-31 00:27:14
他是正確的:延遲加載會,但這不是問題,它是一個功能。 – 2010-03-31 00:30:43
即使延遲加載,我覺得我們不應該在View中做任何事情來啓動數據庫連接。我會考慮改變設計。 – ravi 2010-03-31 03:11:50