Dotconnect for Oracle-EF-全局事务中的本地会话太多
在一个事务中,我必须在一个数据库中插入2条记录,在另一个数据库中插入大约40条记录。我正在使用TransactionScope并收到此错误 我确实读过这篇文章,但这并没有帮助,因为其中涉及2个数据库,而且这是一个分布式事务 我的代码如下所示Dotconnect for Oracle-EF-全局事务中的本地会话太多,oracle,entity-framework,dotconnect,Oracle,Entity Framework,Dotconnect,在一个事务中,我必须在一个数据库中插入2条记录,在另一个数据库中插入大约40条记录。我正在使用TransactionScope并收到此错误 我确实读过这篇文章,但这并没有帮助,因为其中涉及2个数据库,而且这是一个分布式事务 我的代码如下所示 using (var ts = new TransactionScope()) { using (var context = new MyContext()) { for (int i = 0; i < 40; i++)
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);
}
}
}
使用(var ts=newtransactionscope()){
使用(var context=new MyContext()){
对于(int i=0;i<40;i++)
{
var order=context.Orders.Where(a=>a.name='xxx').Single();
context.ArchiveOrders.Add(订单);
}
}
}
即使我在循环外创建“上下文”(与上面链接中的示例不同),代码仍然会失败,出现“本地会话太多”错误
另外,我注意到每个查询“context.Orders.Where(…)”都被登记为一个新事务。我使用的是实体框架,而不是Linq到Sql。因此,上面的代码在20次迭代时中断
除了使它们成为两个独立的本地事务并以某种方式手动处理事务之外,我现在的选择是什么 我们已经在论坛上回复了您。
解决方案是添加context.Connection.Open()代码>在循环之前