2009-10-13 6 views
1

.NET Transaction (TransactionScope 사용)에서 명백하게 (설명서에이 단어가 없으므로) 롤백은 커밋과 동일한 순서로 수행됩니다. 등록과 동일한 순서가 수행되었습니다..NET TransactionScope 롤백 순서

논리적으로 롤백의 순서는 다음과 같아야합니다. 동작 시퀀스가 ​​"do A"이고 "do B"이면 내 롤백 시퀀스는 "undo B"이어야하고 "undo A"여야합니다. 하지만 TransactionScope 덕분에 그렇지 않습니다. 항상 "실행 취소"하고 "실행 취소"합니다.

옵션이 누락되었거나 이상한 주문으로 사망해야합니까? :)

답변

0

Microsoft에 따르면 Complete() 메서드가 실행되기 전에 트랜잭션 범위가 "범위를 벗어났습니다"(즉, 트랜잭션 범위 내에서 예외를 throw하면) 해당 범위 내의 트랜잭션이 롤백되어야합니다 즉시.

트랜잭션이 역순으로 롤백되게하려면 중첩해야합니다. 자세한 내용은 다음 문서를 참조하십시오

내가 트랜잭션 파일 시스템 (일종의)를 구현하기 위해 트랜잭션을 사용하고
http://msdn.microsoft.com/en-us/library/ms172152.aspx

+0

트랜잭션 범위를 사용하여 암시 적 트랜잭션을 구현. 파일 작업은 임의의 순서로 수행 할 수 있으며 역순으로 실행 취소해야합니다. 따라서 트랜잭션을 중첩 할 수 없습니다. 내가 망쳐 놨고 내 자신의 파일 작업 목록을 작성하여 올바른 순서로 되돌려 야 할 필요가 있습니다. – picrap

+0

Mr. Picrap, 당신의 필요에 대한 해결책 ?? – Kiquenet