gpt4 book ai didi

c# - 使用单个 TransactionScope 包装大量数据库更新时出现异常

转载 作者:太空宇宙 更新时间:2023-11-03 16:27:20 24 4
gpt4 key购买 nike

我收到异常“与当前连接关联的事务已完成但尚未处理。必须先处理事务,然后才能使用连接执行 SQL 语句。”当我使用 TransactionScope 包装在对 UpdateItem 子例程的多次调用中发生的大量数据库更新时。有人可以帮助理解此错误的含义以及重组代码的正确方法,同时保留在 foreach 中的任何内容失败时回滚的能力(抛出异常)

static void Foo()
{
using (TransactionScope transactionScope = new TransactionScope())
{
foreach (var item in items)
{
UpdateItem(item);
}

transactionScope.Complete();
}
}


static void UpdateItem(string item)
{
using (MyDataContext db = new MyDataContext)
{
:
:
db.Table1.InsertOnSubmit();
:
db.SubmitChanges();
:
:
db.ExecuteCommand(); // I get the exception here
:
db.Table2.InsertOnSubmit();
:
db.SubmitChanges();
:
}
}

最佳答案

TransactionScope 有超时。当它被击中时,事务被回滚。指定更大的超时值。

关于c# - 使用单个 TransactionScope 包装大量数据库更新时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12148802/

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