트랜잭션스코프
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 호출을 추가해야 합니다.
마지막으로, 코드를 첨부하세요!
첨부된 소스 코드는 다음과 같습니다:관광객 여러분, 이 게시물의 숨겨진 내용을 보고 싶으시다면 부탁드립니다 회답
|