문제

LLBLGEN과의 거래 관리를위한 두 가지 주요 옵션이 있습니다.

방법 1 :

using(DataAccessAdapter adapter = new DataAccessAdapter())
{
    adapter.StartTransaction(IsolationLevel.ReadCommitted, "TR");
    try
    {
        // ...
        adapter.Commit();
    }
    catch
    {
        adapter.Rollback();
        throw;
    }
}

방법 2 :

using(TransactionScope scope = new TransactionScope())
{
    // ...
    scope.Complete();
}

선호하는 방법은 무엇이며 그 이유는 무엇입니까? (Adapapter/2.6 .NET/3.5를 사용하고 있습니다)

도움이 되었습니까?

해결책

DataAccessAdapter를 위해 설계된 트랜잭션 관리를 위해 TransactionScope를 사용하는 데 기대어있는 반면, 트랜잭션을 생성 할 수있는 능력은 주로 DataAccess를 위해 설계되었습니다.

조금 더 명확 해지려면 TransactionScope를 사용하여 여러 DataAccessAdapters에서 여러 트랜잭션을 관리하는 반면 단일 DataAccessAdapter에는 특정 범위가있는 것으로 보입니다.

예를 들어:

using(TransactionScope ts = new TransactionScope())
{
    using(DataAccessAdapter d1 = new DataAccessAdapter())
    {
        //do some data access stuff
    }
    using(DataAccessAdapter d2 = new DataAccessAdapter())
    {
        //do some other data access stuff  
    }
    ts.complete();
}

또 다른 참고 사항은 TransactionScope가 STREAD SAULY이며, 여기서 DataAdapter가 아닌 경우입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top