如何为控制台应用程序设置会话?

时间:2009-12-22 14:32:03

标签: nhibernate

我的网络应用程序有一个c#库,我使用的是nhibernate。 Web应用程序具有我设置的hibernate.cfg.xml文件:

current_session_context_class = web

我正在使用nhibernateHelper类和httpmodule来基于每个请求打开和关闭会话。

我现在需要在控制台应用程序中使用此库,我应该将current_session_context_class值设置为什么?

2 个答案:

答案 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”,   分别

  •