Я в проекте, который использует ниже рамках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);
}
}
Спасибо за любые советы!