Pregunta

Veo que hay dos opciones principales para administrar transacciones con 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();
}

¿Cuál es su método preferido y por qué? (Estoy usando adapapter / 2.6 .net / 3.5)

¿Fue útil?

Solución

Me inclinaría hacia el uso de TransactionScope para administrar transacciones, ya que esto es para lo que fue diseñado, mientras que DataAccessAdapter, mientras que tiene la capacidad de crear transacciones, está diseñado principalmente para DataAccess.

Para intentar ser un poco más claro, puede usar TransactionScope para administrar múltiples transacciones en múltiples DataAccessAdapters, mientras que un único DataAccessAdapter parece tener un alcance específico.

Por ejemplo:

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

Otra nota al margen es que TransactionScope es seguro para subprocesos, mientras que los DataAdapters no lo son.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top