此SqlTransaction已完成;在Linq到Sql dataContext.SubmitChanges期间不再可用

时间:2018-11-21 17:44:16

标签: linq-to-sql transactions submitchanges

我似乎有一个与此处引用的问题类似的问题,但是在该帖子上没有令人满意的答案-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之后刷新数据上下文。

我看了互联网,却找不到任何帮助。任何建议将非常欢迎!预先感谢!

0 个答案:

没有答案