Эта SqlTransaction завершена;он больше не может использоваться во время Linq to Sql dataContext.SubmitChanges - PullRequest
0 голосов
/ 21 ноября 2018

У меня, похоже, есть та же проблема, что и здесь, но на этот пост нет удовлетворительных ответов - Эта SqlTransaction завершена;он больше не может использоваться .

В частности, я использую InsertOnSubmit для вставки 100 объектов в одну из таблиц в моем контексте данных, а затем вызываю SubmitChanges для контекста данных.Время от времени, когда я вызываю SubmitChanges, я получаю сообщение об ошибке в заголовке этого вопроса.

Я создаю новый контекст данных сразу после SubmitChanges каждые 500 записей.Итак, мой код выглядит так:

        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 каждый раз, когда я отправляюизменения.

Я посмотрел в интернете и не нашел ничего, чтобы помочь.Любые предложения будут очень приветствоваться!Заранее спасибо!

...