我必须在一个数据库中插入2条记录,在单个事务中将大约40条记录插入另一个数据库。我正在使用TransactionScope并收到此错误。
我确实读过这篇文章,但这没有用,因为涉及到2个db,它是一个分布式事务。
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”(与上面链接中的示例不同),代码仍会因“太多本地会话”错误而失败。
另外,我注意到每个查询“context.Orders.Where(...)”都被列为新的Transaction。我正在使用实体框架而不是Linq到Sql。所以上面的代码在20次迭代时中断。
除了使它们成为2个独立的本地事务并以某种方式手动执行事务处理之外,我现在有什么选择。