다음을 통해 공유


트랜잭션 지원

LINQ to SQL에서는 세 개의 고유한 트랜잭션 모델이 지원됩니다. 이러한 모델을 검사가 수행되는 순서대로 나열하면 다음과 같습니다.

명시적 로컬 트랜잭션

SubmitChanges가 호출될 때 Transaction 속성이 (IDbTransaction) 트랜잭션으로 설정된 경우 SubmitChanges 호출은 동일한 트랜잭션의 컨텍스트에서 실행됩니다.

트랜잭션이 성공적으로 실행된 후 트랜잭션을 커밋하거나 롤백하는 작업은 직접 수행해야 합니다. 트랜잭션에 해당하는 연결은 DataContext를 생성하는 데 사용되는 연결과 일치해야 합니다. 다른 연결이 사용될 경우 예외가 throw됩니다.

명시적 배포 가능 트랜잭션

활성 Transaction의 범위에서 LINQ to SQL API(SubmitChanges를 포함하지만 여기에 제한되지는 않음)를 호출할 수 있습니다. LINQ to SQL에서는 호출이 트랜잭션 범위에 있는지 검색하고 새 트랜잭션을 만들지 않습니다. 또한 LINQ to SQL은 이 경우 연결이 닫히지 않도록 합니다. 이러한 트랜잭션의 컨텍스트에서 쿼리 및 SubmitChanges 실행을 수행할 수 있습니다.

암시적 트랜잭션

SubmitChanges를 호출할 경우 LINQ to SQL은 호출이 Transaction의 범위에 있는지 또는 Transaction 속성(IDbTransaction)이 사용자가 시작한 로컬 트랜잭션으로 설정되었는지 여부를 확인합니다. 어떠한 트랜잭션도 찾지 못한 경우 LINQ to SQL은 로컬 트랜잭션(IDbTransaction)을 시작하고 이를 사용하여 생성된 SQL 명령을 실행합니다. 모든 SQL 명령이 성공적으로 완료되면 LINQ to SQL은 로컬 트랜잭션을 커밋하고 반환됩니다.

참고 항목