이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 25346|회답: 2

[출처] C#에서 TransactionScope의 사용

[링크 복사]
게시됨 2017. 4. 10. 오전 10:16:25 | | | |
트랜잭션스코프

TransactionScope는 .NET 프레임워크에 포함된 System.Transactions의 클래스입니다. TransactionScope가 Complete 메서드를 호출하지 않고 해제되면(TransactionScope는 IDisposible 인터페이스를 구현하므로 블록 사용을 권장합니다), 이 경우 연산이 실패한 것으로 간주되어 실행을 롤백합니다.
TransactionScope는 트랜잭션을 관리하는 유용한 API입니다("around"는 트랜잭션스코프를 지원하는 데이터베이스가 자동으로 트랜잭션을 관리할 수 있다는 뜻입니다). 대부분의 주류 데이터베이스가 이 API를 지원합니다. 물론 마이크로소프트의 MSSQL도 포함됩니다.
TransactionScope를 지원하지 않는 데이터베이스나 트랜잭션 관련 시스템을 사용한다면 인터셉터를 사용할 수 있지만, 트랜잭션을 지원하는 적절한 API를 사용하도록 코드를 수정해야 합니다(예: BeginTransaction API를 사용해 데이터베이스 제공자의 IDbTransactions 구현을 받아야 합니다).



위 사진은 일부러 설정한 커스텀 예외 설정으로, 정상적으로 롤백할 수 있는지 확인하려고 합니다. 아래 사진은 예외 없이 정상 실행 상태입니다.




TransactionScope의 Complete 메서드를 호출하면 트랜잭션이 성공적으로 실행되었음을 나타냅니다. 물론, 트랜잭션이 항상 실행된다면 트랜잭션이 필요하지 않습니다. 트랜잭션이 존재하는 이유는 여러 작업에서 발생하는 실패 문제를 해결하기 위함이며, 실패가 발생하면 롤백됩니다.
왜냐하면 . .NET의 TransactionScope에서는 명시적인 롤백 호출이 없으며, 가장 가까운 대응은 Dispos 메서드를 사용하는 것입니다. TransactionScope가 Complete 메서드가 호출되기 전에 해제되면, TransactionScope는 롤백을 수행합니다. 따라서 롤백을 수행하기 위해 트랜잭션 인터셉터 면에 Dispose 호출을 추가해야 합니다.


마지막으로, 코드를 첨부하세요!


첨부된 소스 코드는 다음과 같습니다:
관광객 여러분, 이 게시물의 숨겨진 내용을 보고 싶으시다면 부탁드립니다회답






이전의:CREATE DATABASE 문은 다중 문장 트랜잭션 내에서 허용되지 않습니다
다음:Linq의 OrderBy 동적 필드를 지원하세요
 집주인| 게시됨 2017. 4. 10. 오전 10:20:30 |
TransactionScope 클래스는 중첩 상태로 사용할 수 있으며, 중첩 상태로 사용하려면 중첩된 트랜잭션 블록에서 TransactionScopeOption 매개변수를 지정해야 합니다. 기본 매개변수는 필수입니다.

중첩된 클래스 TransactionScope의 TransactionScopeOption 옵션이 Required일 때, 다음과 같은 결과를 볼 수 있습니다. 이들의 트랜잭션 ID가 동일합니다. 더불어, 두 트랜잭션스코프 모두 완료될 때만 진정한 성공입니다.

TransactionScopeOption을 RequiresNew로 설정하면, 중첩된 트랜잭션 블록과 외부 트랜잭션 블록은 독립적이며 서로 영향을 주지 않습니다.

TransactionScopeOption은 현재 블록의 트랜잭션을 취소하기 위해 Suppress로 설정되어 있는데, 이는 일반적으로 거의 사용되지 않습니다.
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com