根據http://nhibernate.info/doc/nh/en/index.html#manipulatingdata-exceptions,數據庫異常後,會話應該被丟棄。在數據庫異常後重新啓動NHibernate會話,無CurrentContext
現在,在我們的Web應用程序中,在某些情況下,拋出並捕獲ADOExceptions是正常的。例如違反約束條件。
根據鏈接的文件我們應該放棄會話。然而,如果我們違反約束條件,我們仍然希望對數據庫做一些工作,所以我需要一個新的會話。
在我們的測試中,我們通過調用
CurrentSessionContext.Unbind(SessionFactory).Close();
CurrentSessionContext.Bind(SessionFactory.OpenSession());
,但我們不使用CurrentSessionContext Web應用程序做到這一點,我們使用LazySessionContext。所以我們不能直接引用業務類中的CurrentSessionContext,因爲它不是從web使用的,我們不能引用LazySessionContext,因爲在集成測試期間HttpContext不可用。
有沒有辦法處置和重新創建會話並將其連接到當前上下文,而不是直接引用上下文類?我有SessionFactory對象和Session對象。
NHibernate參考資料的最新鏈接:http://nhibernate.info/doc/nh/en/index.html#manipulatingdata-exceptions –