아래 코드를 사용하여 첫 번째 테이블 (info2.Id = info.Id;)에서 사용 된 ID로 두 번째 테이블 (Info2)을 업데이트합니다. . 두 번째 저장이 수행되면 (info2.Save()) 오류가 발생합니다. "이미 닫혀 있어야하는이 명령과 연결된 열린 DataReader가 이미 있습니다.". 누구나 내가 잘못하고있는 것을 볼 수 있습니까? 잘못된 방법 라운드 TransactionScope에와 SharedDbConnectionScope있어 같은SubSonic 트랜잭션 - 첫 번째 테이블의 반환 ID를 사용하여 두 번째 테이블에 삽입
음속 버전 3.0.0.3 및 SQL Server 2005
감사
using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope())
{
using (TransactionScope ts = new TransactionScope())
{
Info info = new Info();
info.Desc = "Some information";
info.Save();
Info2 info2 = new Info2();
info2.Id = info.Id;
info2.Desc = "More information";
info2.Save();
ts.Complete();
}
}
나는이 실수가 아음속의 사용자를 영원히 따를 것이라고 생각합니다. 그것은 오랫동안 문서에서 잘못되었습니다. 올바른 순서를 외우려면 Connection이 트랜잭션에 대해 알아야하므로 트랜잭션이 먼저 처리된다는 것을 기억합니다. TransactionScope 줄에서 대괄호를 닫습니다. 중첩 된 절을 사용하여 더 쉽게 읽을 수있게합니다. –