我必须在单个事务中将 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.Orders.Where(...)”都被列为新事务。我使用的是实体框架而不是 Linq to Sql。所以上面的代码在 20 次迭代时中断。
除了使它们成为 2 个独立的本地事务并以某种方式手动进行事务处理之外,我现在还有什么选择。