城堡活动记录中的会话管理

时间:2010-02-08 17:28:50

标签: nhibernate castle-activerecord

如果我在nHibernate上使用Castle Active Record,如何管理会话。基本上,如果我直接使用nHibernate,我可以自己管理ISession的生命周期。但是当我使用Castle AR时,它并没有给我一种方法来管理会话的生命周期。我想在每个线程中使用单个Session。


我在WCF服务中使用Castle AR,并希望使用每个WCF请求的会话。

2 个答案:

答案 0 :(得分:2)

在Castle ActiveRecord中,您需要SessionScope:

,而不是使用ISession
using(new SessionScope())
{
  ; // do work here
}

如果由于某种原因需要访问SessionScope中的ISession,可以这样做:

ISession dbSession = Castle.ActiveRecord.ActiveRecordMediator
      .GetSessionFactoryHolder().CreateSession(
          typeof(Castle.ActiveRecord.ActiveRecordBase));

此处有更多文档:

http://www.castleproject.org/activerecord/documentation/trunk/usersguide/scopes.html#sess_scope

在这里:

http://www.castleproject.org/activerecord/documentation/trunk/manual/scopes.html

答案 1 :(得分:0)

我假设您正在使用网络应用。那不是这样吗?

有几种方法可以做到 - Castle AR documentation

最简单的方法是使用SessionScopeWebModule为每个请求提供一个会话。