C# 使用单个TransactionScope包装大量数据库更新时出现异常
我得到与当前连接关联的事务已完成但尚未处理的异常。必须先释放事务,然后才能使用连接执行SQL语句。当我使用TransactionScope包装在多次调用UpdateItem子例程中发生的大量数据库更新时。有人能帮助理解这个错误的含义,以及在foreach中出现异常时保留回滚功能的同时重构代码的正确方法吗C# 使用单个TransactionScope包装大量数据库更新时出现异常,c#,linq-to-sql,transactionscope,C#,Linq To Sql,Transactionscope,我得到与当前连接关联的事务已完成但尚未处理的异常。必须先释放事务,然后才能使用连接执行SQL语句。当我使用TransactionScope包装在多次调用UpdateItem子例程中发生的大量数据库更新时。有人能帮助理解这个错误的含义,以及在foreach中出现异常时保留回滚功能的同时重构代码的正确方法吗 static void Foo() { using (TransactionScope transactionScope = new TransactionScope())
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有一个超时。当它被命中时,事务被回滚。指定更大的超时值。TransactionScope具有超时。当它被命中时,事务被回滚。指定一个更大的超时值。什么可以工作?有什么帮助吗?在大多数情况下,我的WCF服务都会出现相同的错误。它工作得很好,然后它最近开始抛出这个错误。它能工作吗?有什么帮助吗?在大多数情况下,我的WCF服务都会出现相同的错误。它工作正常,然后最近开始抛出此错误。我已经将timeout DataContext.CommandTimeout设置为Int32.MaxValue。这不是TScope的超时。那个不一样。它最多只能在TScope的ctor中设置10分钟。我已经将timeout DataContext.CommandTimeout设置为Int32.MaxValue。这不是TScope的超时。那个不一样。最多只能在TScope的ctor中设置10分钟。