2009-04-29 14 views
2

Ich sehe, es gibt zwei Hauptoptionen für die Verwaltung von Transaktionen mit llblgen.LLBLGen - TransactionScope oder DataAccessAdapter.StartTransaction

Methode 1:

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

Methode 2:

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

Was ist Ihre bevorzugte Methode ist und warum? (Ich benutze adapapter/2.6 .net/3.5)

Antwort

1

Ich würde in Richtung TransactionScope für die Verwaltung von Transaktionen neigen, da dies ist, wofür es entwickelt wurde, während der DataAccessAdapter, während es die Möglichkeit zum Erstellen von Transaktionen in erster Linie für entwickelt wurde Datenzugriff

Um etwas übersichtlicher zu sein, können Sie TransactionScope verwenden, um mehrere Transaktionen über mehrere DataAccessAdapter hinweg zu verwalten, während ein einzelner DataAccessAdapter einen bestimmten Bereich aufweist.

Zum Beispiel:

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

Eine weitere Randnotiz ist, dass Transaction Thread-sicher ist, wo, wie Dataadapter nicht.

+0

Hat TransactionScope Ihrer Erfahrung nach immer so funktioniert, wie Sie es erwarten? Es gibt sehr wenig, aber ich frage mich immer noch, ob es irgendwelche Probleme gibt. – JeremyWeir

+0

Es hat immer funktioniert, wie ich es erwarte, aber ich würde Sie ermutigen, die doco zu lesen und zu verstehen, warum es tut, was es tut, insbesondere in Bezug auf verschachtelte transactionscope Objekte und mehrere Transaktionen. – lomaxx

Verwandte Themen