2010-02-08 2 views
1

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


Я использую замок AR в службе WCF и хотел бы использовать сессии на WCF запрос.

ответ

2

Вместо использования ISession, в замке 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

Не работает, дает объекту ref не заданный экземпляр ошибки объекта при попытке получить dbSession. – Justin

+0

Знаете ли вы, что при вызове '.CreateSession()' у владельца фабрики сеансов будет создана текущая область? Когда я это пробовал, SessionScope.Current имеет значение NULL, поэтому ленивая загрузка не выполняется. Должна быть возможна инициализация текущей области сеанса, так как это делает SessionScopeWebModule. –

+0

Ничего, я понял. Вам просто нужно обновить 'SessionScope' и зарегистрировать его в текущем потоке. –

0

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

Есть несколько способов сделать это - Castle AR documentation

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

+0

Я работаю в веб-приложение, но веб-приложений делегаты звоните в службу WCF, где используется замок AR. Я хотел бы использовать Session для запроса WCF? – Amitabh

Смежные вопросы