2013-01-27 5 views
1

트랜잭션이 커밋 된 경우 로그 항목이 파일 시스템에만 입력되도록하는 방법을 이해하려고합니다. 아래 코드를 참조하십시오.SQLConnection이 IEnlistmentNotification을 구현하지 않습니다

Using (scope As TransactionScope = new TransactionScope()) 
    'write log log file (line 2)' 
    scope.complete 
End Using 

트랜잭션 범위가 완료되기 전에 로그 파일에 기록됩니다.

나는 IEnlistmentNotification 인터페이스에 대해 읽었습니다. SQLConnection 클래스는 트랜잭션 및 분산 트랜잭션을 허용한다는 것을 알고 있습니다. 따라서 나는이 클래스가 IEnlistmentNotification을 구현할 것으로 기대했지만 그렇지 않았다. 왜 안 그래?

답변

1

IEnlistmentNotification은 리소스 관리자가 트랜잭션에 참여하기 위해 사용하지만 SQL 연결이나 트랜잭션에 의해 구현되지는 않습니다. 당신이 당신의 자신의 트랜잭션 자원 관리자를 구현하는 경우

는 해당 인터페이스를 구현하고이 트랜잭션에 참여하려는 시스템을 알리기 위해 transactions enlistment methodsEnlistDurable 또는 EnlistVolatile 중 하나를 사용합니다. 이 시점부터 거래 상태에 반응하고 영향을 주도록 인터페이스에 대한 호출을 받게됩니다.

트랜잭션 방식으로 파일을 수정하려면이 목적으로 자원 관리자를 구현하거나 찾아야합니다. 이 자원 관리자는 IEnlistmentNotification을 구현하고 언급 된 참여 방법을 통해 거래에 참여합니다.

+0

감사합니다. +1. 이 인터페이스를 구현하는 클래스의 예가 있습니까? – w0051977

+0

다음은 MSDN (http://msdn.microsoft.com/en-us/library/ms229975(v=vs.90).aspx)의 관련 항목이며 여기 MSDN Magazine의 기사에서 휘발성 리소스 관리자 (http://msdn.microsoft.com/en-us/magazine/cc163688.aspx) –

+0

'IEnlistmentNotification' SQL 연결에 대한 대안에 대한 통찰력? 분명히이 모든 것을 처리하는 코드가 있습니다. –

관련 문제