0

我必须在单个事务中将 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 个独立的本地事务并以某种方式手动进行事务处理之外,我现在还有什么选择。

4

1 回答 1

0

我们已经在我们的论坛上回复了context.Connection.Open();解决方案是在循环之前添加。

于 2011-03-23T12:44:06.400 回答