using (TransactionScope scope = new TransactionScope())
{
int updatedRows1 = custPh.Update(cust.CustomerID, tempPh1, 0);
int updatedRows2 = custPh.Update(cust.CustomerID, tempPh2, 1);
int updatedRows3 = cust.Update();
if (updatedRows1 > 0 && updatedRows2 > 0 && updatedRows3 > 0)
{
scope.Complete();
}
}
上面的 TransactionScope 代码结构是否正确?这是我第一次使用它,所以我试图尽可能简单。
最佳答案
锁好,
但你正在做的是糟糕的设计。
如果不是每个表都更新了行,您基本上是在进行回滚。
您永远不会知道您的交易是完成还是失败。这可能会使解决错误变得痛苦。
如果出现问题,我更愿意抛出异常。这也会导致回滚。因为从未达到 scope.Complete() 。
using (TransactionScope scope = new TransactionScope())
{
int updatedRows1 = custPh.Update(cust.CustomerID, tempPh1, 0);
int updatedRows2 = custPh.Update(cust.CustomerID, tempPh2, 1);
int updatedRows3 = cust.Update();
if (updatedRows1 == 0 || updatedRows2 == 0 || updatedRows3 == 0)
throw new Exception("Not all rows could be updated");
scope.Complete();
}
关于c# - 关于 .NET 中 TransactionScope 的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2938884/