您知道如何在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在事务范围中涉及所有这些时,它将其保存在数据库中,因此当我抛出异常时,所有内容都已保存,我想就是这样 总之,谢谢你的帮助