Nhibernate事务异常

时间:2009-10-22 13:22:33

标签: nhibernate

我在每个请求的会话上下文中使用Nhibernate。 当我使用session.Update并提交或回滚我的事务时,我得到一个ObjectDisposedException。

此异常的堆栈跟踪是:    在NHibernate.Transaction.AdoTransaction.CheckNotDisposed()    在NHibernate.Transaction.AdoTransaction.Rollback()    在C:\ Projects \ MyProject \ ItemService.cs中的MyService.update(MyItem项):第121行    在MyController.Edit(Nullable`1 pageId,MyItem item,FormCollection集合)中的C:\ Projects \ MyProject \ ItemController.cs:第251行

在执行更新之前,事务包含以下属性:     isActive:是的,     wasCommitted:假的,     wasRollBacked:false

执行更新操作后,属性具有以下值:     isActive:false,     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 :(得分:0)

我已经解决了这个问题。

我使用了一些导致问题的nhibernate拦截器。