【发布时间】:2018-09-07 08:37:32
【问题描述】:
我一直在使用 MySQL Transactions 来封装在我的方法中执行的几个读/写操作。
private void ReceiveOrderConfirm(object sender)
{
Db.BeginTransaction();
//succeeds
Thing1();
//canceled by user
Thing2();
//succeeds
Thing3();
Db.CommitTransaction();
}
这是我的示例情况,为清楚起见进行了简化。
我有一个方法,它在其中做几件事,偶尔将控制权交给其他方法来执行和返回。在此示例中,所有这三种方法都不会出错。但是用户可以选择在 Thing2() 中按下取消按钮。现在,如果我只是在用户按下取消时对我的事务调用回滚,那么 Thing3 将执行并成功,自动包装在它自己的自动提交的新事务中。
我的问题是,有没有办法设置一个条件,当在所有这三种方法结束时尝试提交时会自动失败。这样他们就一起回滚,而不是简单的上半场。
【问题讨论】:
标签: c# mysql sql transactions commit