我决定使用Castle ActiveRecord为客户制作一个系统,一切顺利,直到我发现交易不起作用,例如;
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(); }
但它不起作用,我抛出一个Exception只是为了尝试事务回滚,但令我惊讶的是我看到第一个[Save]记录到数据库中.怎么了?
我是Castle和NHibernate的新手,首先我看到它非常有吸引力,我决定继续使用它和MySQL(我从来没有使用过这个数据库),我尝试过ActiveWriter,看起来非常有希望但经过漫长而努力的努力一周我看到了这个问题,现在我觉得我被困住了,就像我浪费了我的时间一样.这应该是容易的但是现在我感到沮丧的原因我找不到足够的信息来进行锻炼,你能帮助我吗?
您需要将代码包装在会话范围中,如下所示:
using(new SessionScope()) { a.Save(); b.Save(); c.Save(); }
在这里阅读更多.