Исключение транзакции Nhibernate - PullRequest
0 голосов
/ 22 октября 2009

Я использую Nhibernate в контексте сеанса для запроса. Когда я использую session.Update и фиксирую или откатываю свою транзакцию, я получаю ObjectDisposedException.

трассировка стека для этого исключения: в NHibernate.Transaction.AdoTransaction.CheckNotDisposed () в NHibernate.Transaction.AdoTransaction.Rollback () в MyService.update (элемент MyItem) в C: \ Projects \ MyProject \ ItemService.cs: строка 121 в MyController.Edit (Nullable`1 pageId, элемент MyItem, коллекция FormCollection) в C: \ Projects \ MyProject \ ItemController.cs: строка 251

Перед выполнением обновления транзакция содержит следующие свойства: isActive: правда, wasCommitted: ложь, wasRollBacked: false

После выполнения действия обновления свойства имеют следующие значения: isActive: ложь, wasCommitted: правда, wasRollBacked: false

Почему я получаю исключение и почему логические значения меняются без фиксации?

Я использую следующий код для выполнения этого действия:

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();   
           }
       }

1 Ответ

0 голосов
/ 26 октября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...