2011-03-23 10 views
0

我必须在单个事务中将2条记录插入到一​​个数据库中,并将大约40条记录插入到另一个数据库中。我正在使用TransactionScope并获取此错误。用于Oracle的Dotconnect - EF - 全局事务中的太多本地会话

我没看过这篇文章,但这并没有帮助,因为有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个本地事务并以某种方式手动执行事务处理之外,我现在有哪些选择。

回答

0

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

相关问题