我似乎有一个与此处引用的问题类似的问题,但是在该帖子上没有令人满意的答案-This SqlTransaction has completed; it is no longer usable。
具体地说,我使用InsertOnSubmit将100个对象插入到数据上下文中的一个表中,然后在数据上下文中调用SubmitChanges。每隔一段时间,当我调用SubmitChanges时,都会出现此问题标题中的错误。
我每隔500条记录的SubmitChanges之后创建一个新的数据上下文。所以我的代码看起来像这样:
DataContext writeDataContext = new DataContext(myConnectionString);
List<MyCalculation> calculationsToAdd = new List<MyCalculation>();
foreach (var transaction in transactions)
{
var myCalculation = new MyCalculation { MyTransactionID = transaction.TransactionID, MyValue = transaction.Amount * 2 };
writeDataContext.GetTable<MyCalculation>().InsertOnSubmit(myCalculation);
calculationsToAdd.Add(myCalculation);
contextCounter++;
if (calculationsToAdd.Count == 100)
{
writeDataContext.SubmitChanges();
calculationsToAdd.Clear();
if (contextCounter >= 500)
{
writeDataContext = new DataContext(myConnectionString);
contextCounter = 0;
}
}
}
在另一个地方,我也看到了此错误,而我正在做的事情甚至更简单-每次提交更改后,都在SubmitChanges之后刷新数据上下文。
我看了互联网,却找不到任何帮助。任何建议将非常欢迎!预先感谢!