2011-01-17 2 views
3

내 asp.net 응용 프로그램에서 엔터프라이즈 라이브러리 데이터 액세스 블록을 사용하고 있습니까? 여러 저장된 procs에 걸쳐 비즈니스 로직 계층에서 트랜잭션을 구현하려고합니다. Entlib은 데이터베이스 액세스를위한 새로운 연결을 엽니 다. 다음과 같은 방법으로 트랜잭션 범위를 사용하면 분산 트랜잭션이 발생합니까?비즈니스 로직 계층에서 트랜잭션을 구현하는 방법

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) 
{ 
    // calling necessary DAL methods 
    scope.Complete(); 
} 

BLL에서 트랜잭션을 구현하는 더 좋은 방법이 있습니까?

답변

0

SQL Server를 백엔드로 말하면 서버 버전에 따라 다릅니다. 여기에 좋은 기사입니다 : DO.NET and System.Transactions

내가 인용 :

하여 TransactionScope는 모두와 완벽하게 분산 트랜잭션을 생성하지 똑똑의 오버 헤드 가 필요한 경우가 아니면. 트랜잭션 에 관련된 리소스가 인 경우 휘발성이있는 경우 모든 것이 메모리에 남아 있고 Microsoft에서 트랜잭션 코디네이터 (DTC)를 배포하면 이 참여하지 않습니다. 리소스가 SQL Server 2005에 연결 인 경우 DTC 은 포함되지 않으며 SQL Server 2005가 트랜잭션을 처리합니다. 이 은 내부의 SQL 트랜잭션을 여는 것과 같습니다. SQL Server 2000이 인 경우 전체 DTC 트랜잭션을 사용합니다.

+0

우수 기사. 나는 Transaction.Current를 점검했다. 트랜잭션 범위 내의 TransactionInformation.DistributedIdentifier. 값은 Guid.Empty {00000000-0000-0000-0000-000000000000} 그래서 나는 같은 트랜잭션 범위 내에서 SQL Server에 대한 다중 액세스를 수행하고 있지만 트랜잭션은 가벼운 가중치를 유지합니다. – developer

관련 문제