Мне нужно вставить 2 записи в одну базу данных и около 40 записей в другую базу данных за одну транзакцию.Я использую TransactionScope и получаю эту ошибку.
Я читал эту статью, но это не помогло, потому что задействованы 2 дБ, и это распределенная транзакция.
http://www.devart.com/blogs/dotconnect/index.php/entity-framework-tips-and-tricks-part-3.html
Мой код похож наниже.
using (var ts = new TransactionScope()) {
using (var context = new MyContext()) {
for (int i = 0; i < 40; i++)
{
var order = context.Orders.Where(a => a.name = 'xxx').Single();
context.ArchiveOrders.Add(order);
}
}
}
Даже несмотря на то, что я создаю «Контекст» вне моего цикла (в отличие от примера в приведенной выше ссылке), код все равно завершается с ошибкой «слишком много локальных сессий».
Также я заметил, что каждый запрос "context.Orders.Where (...)" зачисляется в качестве новой транзакции.Я использую Entity Framework, а не Linq to Sql.Таким образом, вышеприведенный код разбивается на 20 итераций.
Какие у меня есть варианты, кроме того, чтобы сделать их 2-мя независимыми локальными транзакциями и каким-либо образом обрабатывать транзакции вручную.