2013-01-04 19 views
33

Voglio sempre provare a usare TransactionScope ma non riesco proprio a capire che cosa la gente vede su di esso che è utile. Quindi cerchiamo di prendere un esempio: Quindi la domanda più elementareCome utilizzare TransactionScope correttamente?

using(TransactionScope tran = new TransactionScope()) { 
    CallAMethodThatDoesSomeWork1(); 
    CallAMethodThatDoesSomeWork2(); 
    tran.Complete(); 
} 

: Come faccio a scrivere "CallAMethodThatDoesSomeWork1()" in modo che sa come rotolare le sue azioni del lotto se diciamo "CallAMethodThatDoesSomeWork2()" genera un'eccezione?

+2

Sì, questa è la domanda di base –

+3

duplicato di http://stackoverflow.com/questions/5265841/how-to-create-a-class-that-works-with- transactioncope? rq = 1? – Fabske

+1

@Fabske - non c'è risposta – Denis

risposta

20

Il codice all'interno dei metodi chiamati deve essere consapevole delle transazioni e deve essere incluso nella transazione attiva. Questo significa creare o utilizzare le classi, che sono responsabili delle risorse (vedi Implement Your Own Resource Manager.

A tale scopo, mediante l'attuazione di IEnlistmentNotification e arruolare nella transazione. Quando la transazione è completata, il gestore delle transazioni chiamerà metodi come definito su tale interfaccia in modo che la vostra codice può fare/annullare il lavoro

+0

Oh, vedo come farlo. Desidera che la pagina MSDN di "TransactionScope" l'abbia detta: è stata guardandola e non ha mai visto il punto di TransactionScope. Questa è l'interfaccia magica per farlo funzionare. Questo ha senso! – Denis

Problemi correlati