Управление сессиями в Castle Active Record - PullRequest
1 голос
/ 08 февраля 2010

Как мне управлять сессией, если я использую Castle Active Record поверх nHibernate. По сути, я могу управлять жизненным циклом ISession самостоятельно, если использую nHibernate напрямую. Но когда я использую Castle AR, это не дает мне способа управлять жизненным циклом сеанса. Я хочу использовать один сеанс для потока.


Я использую Castle AR в службе WCF и хотел бы использовать Session для запроса WCF.

Ответы [ 2 ]

2 голосов
/ 08 февраля 2010

Вместо использования ISession в Castle ActiveRecord вы хотите SessionScope:

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

Если по какой-то причине вам нужен доступ к ISession внутри SessionScope, вы можете сделать это:

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

0 голосов
/ 08 февраля 2010

Я предполагаю, что вы работаете в веб-приложении. Разве это не так?

Есть несколько способов сделать это - Документация Castle AR

Самый простой способ - использовать SessionScopeWebModule для предоставления сеанса для каждого запроса.

...