您知道如何在Castle ActiveRecord中实现事务吗?

您知道如何在Castle ActiveRecord中实现事务吗?,activerecord,castle,Activerecord,Castle,例如,我决定为一个客户创建一个使用的系统,一切都进行得很顺利,直到我发现事务不起作用 TransactionScope t = new TransactionScope(); try { member.Save(); //This is just to see transaction working

例如,我决定为一个客户创建一个使用的系统,一切都进行得很顺利,直到我发现事务不起作用

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

阅读更多信息。

我最终修复了,碰巧我做错了,我重写了成员类的Save方法,并将其内部的sessionScope设置为事务范围,因此当a在事务范围中涉及所有这些时,它将其保存在数据库中,因此当我抛出异常时,所有内容都已保存,我想就是这样

总之,谢谢你的帮助