我有一些遺留代碼用於打開自己的Sqlconnection。我現在想用SqlConnection Nhibernate創建。有沒有辦法從任何地方訪問當前的Nhibernate會話?
但我寧願避免更改代碼(DI,添加大量的設置,...),所以,是否有簡單的(可信的)方式來獲取當前的Nhibernate會話?
我有一些遺留代碼用於打開自己的Sqlconnection。我現在想用SqlConnection Nhibernate創建。有沒有辦法從任何地方訪問當前的Nhibernate會話?
但我寧願避免更改代碼(DI,添加大量的設置,...),所以,是否有簡單的(可信的)方式來獲取當前的Nhibernate會話?
不,現在的NHibernate會話是什麼?
在Web應用程序中,每個http請求都必須使用其特定的NHibernate會話。
在桌面應用程序中,每個屏幕可能會爲其每個操作使用一個會話。
NHibernate會話不應該被用作單例。
您應該使用會話工廠在您的遺留代碼中打開一個新的NHibernate會話,然後使用其CreateSQLQuery
方法。你的會話工廠通常應該有一個單身生命週期。
如果你將你的NHibernate會話綁定到一些對你的應用程序有意義的上下文(比如HttpContext,CallContext),你可以改爲從那裏獲取它。注意可能導致上下文丟失的情況(異步/等待配置爲不恢復上下文,asp.net線程敏捷性(不會導致HttpContext
損失,但CallContext
損失),...)。