2009-10-22 2 views
0

Я использую 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(); 
      } 
     } 
+0

Пожалуйста, разместите соответствующие разделы (разделы) кода. –

+0

Вы создали свое собственное соединение или NH создаете соединение для вас? –

+0

Как вы настроили FlushMode? Вы начали транзакцию? –

ответ

0

Я уже решил проблему.

Я использовал некоторые перехватчики nhibernate, которые вызвали проблему.

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