Dotconnect for Oracle - EF - 全局事务中的本地会话太多

时间:2011-03-23 00:25:44

标签: oracle entity-framework dotconnect

我必须在一个数据库中插入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个独立的本地事务并以某种方式手动执行事务处理之外,我现在有什么选择。

1 个答案:

答案 0 :(得分:0)

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