-1

Я в проекте, который использует ниже рамкахNHibernate/Ninject - обновление не выполняется сразу после пользователя отправить форму

  • ASP.NET MVC4
  • NHibernate как ОРМ
  • Ninject как IoC управлять зависимостями и делать DI

Проблема в том, что после того, как пользователь обновил объект и отправил форму, он должен подождать около 20 секунд, чтобы загрузить правильные данные. Кроме того, на этот раз изменения сохраняются в базе данных (SQL Server)

У нас есть управление объектом NHibernate ISession в RequestScope, но обнаружили, что метод деактивации не вызывая при MVC перенаправления с редактирования в список экрана.

Ниже основная часть модуля Ninject для NHibernate: метод

Нагрузка:

Bind<ISession>() 
      .ToMethod(c => c.Kernel.Get<ISessionFactory>().OpenSession(interceptor)) 
      .InRequestScope() 
      .OnActivation(SetupSession()) 
      .OnDeactivation(CommitOrRollback) 


private Action<ISession> SetupSession() 
    { 
     _logger.Debug("OnActivation"); 

     return s => 
     { 
      s.BeginTransaction(IsolationLevel.ReadCommitted); 
      s.FlushMode = FlushMode.Commit; 
     }; 
    } 

    private void CommitOrRollback(ISession session) 
    { 
     _logger.Debug("OnDeactivation"); 

     if (!session.Transaction.IsActive) 
     { 
      return; 
     } 

     try 
     { 
      session.Transaction.Commit(); 
      session.Flush(); 
      _logger.Debug("Session committed successfully"); 
     } 
     catch (Exception ex) 
     { 
      session.Transaction.Rollback(); 
      throw new CommitDataException(ex); 
     } 
    } 

Спасибо за любые советы!

ответ

0

С уверенностью в коде, который мы реализовали после некоторых исследований с добавлением большего количества журналов. Тогда мы обнаружим, есть новый релиз Ninject.Web.Common

Обновление от Ninject.Web.Common 3.2.0.0 в

3.2.3.0

и прикладные работы. Посмотрите, что было изменено в lib.