c# transactionscope 예제

suppress는 코드 섹션에서 수행하는 작업을 유지하려는 경우 유용하며 작업이 실패할 경우 앰비언트 트랜잭션을 중단하지 않으려는 경우에 유용합니다. 예를 들어 로깅 또는 감사 작업을 수행하려는 경우 또는 주변 트랜잭션이 커밋또는 중단되는지 여부에 관계없이 구독자에게 이벤트를 게시하려는 경우를 예로 들 수 있습니다. 이 값을 사용하면 다음 예제와 같이 트랜잭션 범위 내에 비트랜잭션 코드 섹션을 사용할 수 있습니다. 트랜잭션을 롤백하려면 트랜잭션 범위 내에서 Complete 메서드를 호출해서는 안 됩니다. 예를 들어 범위 내에서 예외를 throw할 수 있습니다. 참여하는 트랜잭션이 롤백됩니다. 다음 예제에서 RootMethod 메서드의 경우와 마찬가지로 자체 범위를 사용하는 메서드 내에서 TransactionScope를 사용하는 메서드를 호출하여 트랜잭션 범위를 중첩할 수 있습니다. SqlConnection)을 연결 트랜잭션이라고 합니다. SqlTransaction(IDbTransaction)은 연결 트랜잭션의 예입니다. .NET 프레임워크 1.0/1.1에서 SqlTransaction을 사용합니다. 예제 코드에서 중첩된 트랜잭션은 첫 번째 범위가 필수인 것으로 만들어집니다. 중첩된 트랜잭션 범위는 기본적으로 앰비언트 트랜잭션이 만들어지므로 다음 범위가 상위 트랜잭션을 조인하므로 동시에 필수로 만들어집니다. Scope2는 앰비언트 트랜잭션과 독립적으로 작동하는 NewTransaction이며 scope3은 전역 범위의 주변 트랜잭션도 억제합니다.

트랜잭션 NTFS(TxF) .NET은 오픈 소스 프로젝트입니다. 이 라이브러리를 사용하여 트랜잭션 범위 내에서 파일/디렉터리를 작성/작성/대처할 수 있으며 트랜잭션을 자동으로 지원합니다. 트랜잭션 관련 사항을 명시적으로 언급하지 않고 트랜잭션을 지원해야 하는 코드 블록을 자동으로 식별하는 트랜잭션입니다. 앰비언트 트랜잭션은 데이터베이스에만 연결되지 않고 모든 트랜잭션 인식 공급자를 사용할 수 있습니다. 트랜잭션 범위는 앰비언트 트랜잭션을 구현합니다. 트랜잭션Scope의 사용이 표시되면 메서드로 전송하거나 속성을 설정하는 트랜잭션 관련 내용을 찾을 수 없습니다. 해당 코드가 트랜잭션Scope에 있는 경우 코드 블록이 트랜잭션과 함께 자동으로 연결됩니다. WCF 트랜잭션은 트랜잭션 인식 공급자의 또 다른 예입니다. 누구나 WCF 구현과 같은 트랜잭션 인식 공급자를 작성할 수 있습니다. 이 예제에서는 필수를 사용 하 고 새 범위 (scope1)를 만드는 어떤 주변 트랜잭션 없이 코드 블록을 보여 드립니다. scope1은 새 트랜잭션(트랜잭션 A)을 만들고 트랜잭션 A를 앰비언트 트랜잭션으로 만드는 루트 범위입니다. 그런 다음 Scope1은 서로 다른 트랜잭션ScopeOption 값을 가진 세 개의 개체를 더 만듭니다.

예를 들어 scope2는 필수로 만들어지며 앰비언트 트랜잭션이 있으므로 scope1에서 만든 첫 번째 트랜잭션에 조인합니다. scope3는 새 트랜잭션의 루트 범위이며 scope4에는 앰비언트 트랜잭션이 없습니다. 트랜잭션ScopeOption.요구새:모든 점화 작업은 기존 트랜잭션에 참여합니다(새 트랜잭션이 생성되지 않음). 점화 트랜잭션은 중첩 된 트랜잭션 스코프 블록 종료 시 완료됩니다. – 커밋 또는 롤백이 수행됩니다. 외부 범위는 그 이후에 아무 영향도 주지 않습니다. 범위가 Suppress를 사용하여 인스턴스화되는 경우 주변 트랜잭션이 있는지 여부에 관계없이 트랜잭션에 참여하지 않습니다.

Comment is closed.