我决定为客户制作一个系统 城堡活动记录, ,一切都很顺利,直到我发现交易不起作用,例如;

               TransactionScope t = new TransactionScope();

               try
               {
                   member.Save();

                   //This is just to see transaction working
                   throw new Exception("Exception");  

                   foreach (qfh.Beneficiary b1 in l)
                   {
                       b1.Create();
                   }


               }
               catch (Exception ex)
               {

                   t.VoteRollBack();
                   MessageBox.Show(ex.Message);
               }
               finally
               {
                   t.Dispose();
               }

但它不起作用,我抛出一个异常只是为了尝试事务回滚,但令我惊讶的是我看到第一个[保存]记录到数据库中。怎么了?

我是 Castle 和 NHibernate 的新手,首先我看到它非常有吸引力,我决定继续使用它和 MySQL(我从未使用过这个数据库),我尝试了 ActiveWriter,它看起来很有前途,但经过长时间的努力一周我看到这个问题,现在我觉得我被困住了,就像我浪费了时间。这应该很容易,但现在我感到很沮丧,因为我找不到足够的信息来进行这项锻炼,你能帮助我吗?

有帮助吗?

解决方案

本明白了。该文档有点令人困惑。参考最后一块 在页面上, 、“嵌套事务”。

其他提示

您需要将代码包装在会话范围内,如下所示:

using(new SessionScope())
{
   a.Save();
   b.Save();
   c.Save();
}

阅读更多 这里.

我终于修复了,碰巧我做错了,我覆盖了Member类的Save方法,并将sessionScope内部和内部都设置为事务范围,所以当a涉及到它保存在数据库中的事务范围中的所有内容时,所以当我抛出异常时,一切都已经保存了,我想就是这样。

总而言之,感谢您的帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top