하나의 트랜잭션에 2 개의 레코드를 하나의 db에 삽입하고 약 40 개의 레코드를 다른 db에 삽입해야합니다. TransactionScope를 사용하고 있는데이 오류가 발생했습니다.Dotconnect for Oracle - EF - 글로벌 트랜잭션에서 너무 많은 로컬 세션
이 기사를 읽었지만 도움이되지 않습니다. 왜냐하면 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 (...)"쿼리가 새로운 트랜잭션으로 등록되었음을 확인했습니다. Entity Framework 및 SQL Linq 않습니다 사용하고 있습니다. 따라서 위의 코드는 20 번 반복됩니다.
내 옵션은 이제 2 개의 독립적 인 로컬 트랜잭션을 만들지 않고 수동으로 트랜잭션 처리를 수행합니다.