Я использую Nhibernate в контексте сеанса за запрос. Когда я использую session.Update и фиксацию или откат моей транзакции, я получаю ObjectDisposedException.Исключение транзакции Nhibernate
трассировки стека для этого исключения является: на NHibernate.Transaction.AdoTransaction.CheckNotDisposed() в NHibernate.Transaction.AdoTransaction.Rollback() в MyService.update (MyItem пункт) в C: \ Проекты \ MyProject \ ItemService.cs: линия 121 на MyController.Edit (Nullable`1 PageId, MyItem вещь, коллекция FormCollection) в C: \ Projects \ MyProject \ ItemController.cs: строка 251
Перед тем, как выполнить обновление транзакция содержит следующие свойства: isActive: true, wasCommitted: false, wasRollBacked: false
После того как я выполнил действие обновления свойства имеют следующие значения: IsActive: ложные, wasCommitted: правда, wasRollBacked: ложные
Почему я получаю исключение и почему же булевы изменить без фиксации?
Я использую следующий код для выполнения этого действия:
using (var tx = SessionManager.CurrentSession.BeginTransaction())
{
try
{
//perform update
wysiwygitemRepository.Update(item);
// perform an action that raises an exception (because of null value)
pageSettingService.SaveSettings(null, item.Id);
tx.Commit();
}
catch(Exception)
{
tx.Rollback();
}
}
Я использовал fluhmode.none в flushmode, но и пытался flushmode.auto
Даже если я изменить код к следующему, У меня все же есть то же исключение:
using (var tx = SessionManager.CurrentSession.BeginTransaction())
{
try
{
//perform update
SessionManager.CurrentSession.Update(item);
tx.Commit();
}
catch(Exception)
{
tx.Rollback();
}
}
Пожалуйста, разместите соответствующие разделы (разделы) кода. –
Вы создали свое собственное соединение или NH создаете соединение для вас? –
Как вы настроили FlushMode? Вы начали транзакцию? –