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