NHibernate在不同的環境應該使用不同的上下文環境,分類如下:
1、 NHibernate.Context.ManagedWebSessionContext
爲Web項目的HttpContext提供操作上下文,僅用在Web 項目中。必須手動通過Bind和Unbind靜態方法綁定和解除ISession實例,它自己不能打開,關閉自己。
配置參數current_session_context_class爲:managed_web
2、 NHibernate.Context.CallSessionContext
爲Remoting服務項目中的CallContext提供上下文操作環境,不建議在.net 2.0 web項目中使用。
配置參數current_session_context_class爲:call
3、 NHibernate.Context.ThreadStaticSessionContext
通過[System.ThreadStaticAttribute]特性爲每個線程提供操作上下文,以避免在同一個線程中存在多個CurrentSession。
必須手動通過Bind和Unbind靜態方法綁定和解除ISession實例,它自己不能打開,關閉自己。
配置參數current_session_context_class爲:thread_static
4、 NHibernate.Context.WebSessionContext
爲每個System.Web.HttpContext提供一個CurrentSession,僅在Web 項目有效。與ManagedWebSessionContext類似。
配置參數current_session_context_class爲:web
5、NHibernate.Context.WcfOperationSessionContext
爲WCF項目提供當前操作上下文,僅在一個WCF操作的生命週期中有效。
配置參數current_session_context_class爲:wcf_operation