Amitabh
Amitabh

Reputation: 61197

Session Management in Castle Active Record

How do I manage session if I am using Castle Active Record over nHibernate. Basically I can manage the life cycle of ISession on my own if I am using nHibernate directly. But when I am using Castle AR it does not give me a way to manage the life cycle of the session. I want to use single Session per thread.


I am using Castle AR in a WCF service and would like to use Session per WCF Request.

Upvotes: 1

Views: 2382

Answers (2)

Michael Maddox
Michael Maddox

Reputation: 12489

Instead of using ISession, in Castle ActiveRecord you want SessionScope:

using(new SessionScope())
{
  ; // do work here
}

If you need access to the ISession inside the SessionScope for some reason, you can do this:

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

More documentation is here:

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

and here:

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

Upvotes: 2

Mark Sherretta
Mark Sherretta

Reputation: 10230

I assume you are working in a web app. Is that not the case?

There are a couple of ways to do it - Castle AR documentation

The simplest way is to the use SessionScopeWebModule to give a session per request.

Upvotes: 0

Related Questions