Domanda

Vedo che ci sono due opzioni principali per la gestione delle transazioni con llblgen.

Metodo 1:

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

Metodo 2:

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

Qual è il tuo metodo preferito e perché? (Sto usando adapter / 2.6 .net / 3.5)

È stato utile?

Soluzione

Vorrei utilizzare TransactionScope per la gestione delle transazioni in quanto è stato progettato per questo mentre DataAccessAdapter, mentre ha la capacità di creare transazioni, è progettato principalmente per DataAccess.

Per cercare di essere un po 'più chiari, è possibile utilizzare TransactionScope per gestire più transazioni tra più DataAccessAdapters mentre un singolo DataAccessAdapter sembra avere un ambito specifico.

Ad esempio:

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

Un'altra nota a margine è che TransactionScope è thread-safe, mentre DataAdapters non lo è.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top