Nhibernate Castle活动记录中的会话管理
如果我在nHibernate上使用Castle Active Record,如何管理会话。如果我直接使用nHibernate,我基本上可以自己管理ISession的生命周期。但是当我使用Castle AR时,它并没有给我一种管理会话生命周期的方法。我希望每个线程使用一个会话Nhibernate Castle活动记录中的会话管理,nhibernate,castle-activerecord,Nhibernate,Castle Activerecord,如果我在nHibernate上使用Castle Active Record,如何管理会话。如果我直接使用nHibernate,我基本上可以自己管理ISession的生命周期。但是当我使用Castle AR时,它并没有给我一种管理会话生命周期的方法。我希望每个线程使用一个会话 我正在WCF服务中使用Castle AR,希望根据WCF请求使用会话。我假设您正在使用web应用程序。不是这样吗 有几种方法可以做到这一点- 最简单的方法是使用SessionScopeWebModule为每个请求提供一个会
我正在WCF服务中使用Castle AR,希望根据WCF请求使用会话。我假设您正在使用web应用程序。不是这样吗 有几种方法可以做到这一点-
最简单的方法是使用SessionScopeWebModule为每个请求提供一个会话。在Castle ActiveRecord中,您希望SessionScope:
using(new SessionScope())
{
; // do work here
}
如果出于某种原因需要访问SessionScope内的ISession,可以执行以下操作:
ISession dbSession = Castle.ActiveRecord.ActiveRecordMediator
.GetSessionFactoryHolder().CreateSession(
typeof(Castle.ActiveRecord.ActiveRecordBase));
更多文档如下:
在这里:
我正在使用web应用,但web应用代表调用使用Castle AR的WCF服务。我想根据WCF请求使用会话?不起作用,当您尝试获取dbSession时,将对象引用未设置为对象错误的实例。您知道在会话工厂持有者上调用
.CreateSession()
是否会创建当前作用域吗?当我尝试时,SessionScope.Current为null,因此延迟加载失败。必须能够初始化当前会话范围,因为SessionScopeWebModule
可以初始化当前会话范围。不管怎样,我已经搞定了。您只需新建一个SessionScope
,它就在当前线程中注册了它。