我的网络应用程序有一个c#库,我使用的是nhibernate。 Web应用程序具有我设置的hibernate.cfg.xml文件:
current_session_context_class = web
我正在使用nhibernateHelper类和httpmodule来基于每个请求打开和关闭会话。
我现在需要在控制台应用程序中使用此库,我应该将current_session_context_class值设置为什么?
答案 0 :(得分:4)
您可以使用“线程”选项。这会将当前会话绑定到线程。
有关桌面应用程序中会话管理的更多信息: What is your session management strategy for NHibernate in desktop applications?
关于NHibernate和桌面应用程序的Ayendes MSDN文章: http://msdn.microsoft.com/en-us/magazine/ee819139.aspx
答案 1 :(得分:1)
我已将nHibernate用于网络和控制台应用,但从未使用此特定配置设置。
我做了一些google-ing并发现了这个:
Contextual Sessions
摘录:
开箱即用,NHibernate 2.0.0问世 有几个这样的实现 接口:
NHibernate.Context.ManagedWebSessionContext -current会话由HttpContext跟踪。但是,你是 负责绑定和解除绑定 使用静态方法的ISession实例 在这堂课上,它永远不会打开, 冲洗,或关闭一个ISession本身。
NHibernate.Context.CallSessionContext -Conurrent会话由CallContext跟踪。你有责任 绑定和取消绑定ISession实例 用静态的类方法 CurrentSessionContext。
NHibernate.Context.ThreadStaticSessionContext -current会话存储在线程静态变量中。这个背景 只支持一个会话工厂。您 负责绑定和解除绑定 使用静态方法的ISession实例 of CurrentSessionContext。
NHibernate.Context.WebSessionContext - 类似于上面的ManagedWebSessionContext,商店 HttpContext中的当前会话。 你有责任绑定和解除绑定 一个静态的ISession实例 课堂方法 CurrentSessionContext。
.....
...但是,有相应的 短名称:“managed_web”,“call”, “thread_static”和“web”, 分别