gpt4 book ai didi

c# - 关于 .NET 中的 TransactionScope 的问题

转载 作者:行者123 更新时间:2023-11-30 14:04:04 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com