Pergunta

Eu vejo existem duas principais opções para gerenciar transações com LLBLGen.

Método 1:

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

Método 2:

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

Qual é o seu método preferido e por quê? (Estou usando adapapter / 2.6 .net / 3.5)

Foi útil?

Solução

Eu inclinar-se para usar TransactionScope para o gerenciamento de transações, pois isso é o que ele foi projetado para enquanto o DataAccessAdapter, enquanto ele tem a capacidade de criar transações é projetado principalmente para DataAccess.

Para tentar ser um pouco mais claro, você poderia usar TransactionScope para gerenciar várias transações em vários DataAccessAdapters enquanto um único DataAccessAdapter parece ter um âmbito específico.

Por exemplo:

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();
}

Outra nota é que TransactionScope é thread-safe, onde, como DataAdapters não são.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top