我收到异常“与当前连接关联的事务已完成但尚未释放。必须先释放事务,然后才能使用连接执行 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();
:
}
}