У меня, похоже, есть та же проблема, что и здесь, но на этот пост нет удовлетворительных ответов - Эта 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 каждый раз, когда я отправляюизменения.
Я посмотрел в интернете и не нашел ничего, чтобы помочь.Любые предложения будут очень приветствоваться!Заранее спасибо!