2016-07-11 2 views
1

Я получаю сеанс впрыскивания сеанса метода обслуживания в global.asax вКак реализовать NHibernate сессии для каждого запроса шаблона, используя funq Container Service Stack в качестве инжектора зависимости

protected void Application_Start() 
{  
    this.RegisterContainer(); 
} 
private void RegisterContainer() 
{ 
    container.Register<IActivityService>(c => new ActivityService(SessionFactory.GetCurrentSession())); 
} 

3 В методе обслуживания я получаю сессию

using (var transaction = _session.BeginTransaction()) 
{ 
    ........................   
} 

проблема заключается в том, что к этому методу обслуживания пришел параллельный запрос, он бросает исключения. Я узнал, что Nhibernate не поддерживает concurency.Ho для достижения этого с помощью Funq Container?

ответ

1

ServiceStack's IOC По умолчанию регистрирует зависимости как одноточечного по умолчанию, тогда вы должны зарегистрировать переходную зависимость для этого вместо этого:

container.Register<IActivityService>(c => 
    new ActivityService(SessionFactory.GetCurrentSession())) 
.ReusedWithin(ReuseScope.None); 

Кроме этого previous question показаны другие примеры регистрации, используя NHibernate с ServiceStack.

+0

Несмотря на то, что я установил ReuseScope.None, он по-прежнему не поддерживает параллельные транзакции. – Raghu

+0

Не знаете ничего о параллельных транзакциях NHibernate, может быть, вам нужен новый сеанс вместо повторного использования существующего? – mythz

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