Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 25346|Risposta: 2

[Fonte] Uso di TransactionScope in C#

[Copiato link]
Pubblicato su 10/04/2017 10:16:25 | | | |
TransactionScope

TransactionScope è una classe in System.Transactions, che è una classe che viene fornita con il framework .NET. Se il TransactionScope viene rilasciato senza chiamare il metodo Complete (TransactionScope implementa l'interfaccia IDisposible, si consiglia l'uso del blocco), allora considererà l'operazione fallita e annullerà l'esecuzione.
TransactionScope è un'API utile che gestisce le transazioni intorno ("intorno" significa che i database che supportano TransactionScope possono gestire automaticamente le transazioni), e la maggior parte dei database mainstream supporta questa API, inclusa ovviamente la MSSQL di Microsoft.
Se stai utilizzando un database o qualche sistema correlato alle transazioni che non supporta TransactionScope, puoi comunque usare l'intercettore, ma dovrai modificare il tuo codice per utilizzare un'API adeguata che supporti transazioni (ad esempio, usando l'API BeginTransaction per ottenere l'implementazione IDbTransactions da parte del fornitore del database).



Quanto sopra è un'eccezione personalizzata che ho appositamente inserito per vedere se può essere riportata normalmente, e l'immagine qui sotto mostra l'esecuzione normale, senza eccezioni.




Chiamare il metodo Complete di TransactionScope indica che la transazione è stata eseguita con successo. Naturalmente, se la transazione viene sempre eseguita, allora non è necessaria. Il motivo per cui ci sono transazioni è risolvere il problema del guasto in più operazioni, e se c'è un guasto, verrà annullato.
Perché il . .NET TransactionScope non prevede una chiamata di rollback esplicita, e l'equivalente più vicino è utilizzare il metodo Dispose. Se il TransactionScope viene rilasciato prima che venga chiamato il metodo Complete, allora il TransactionScope esegue un rollback. Pertanto, è necessario aggiungere una chiamata Dispose alla faccia dell'intercettore della transazione per eseguire il rollback.


Infine, allega il codice!


Allegato è riportato il codice sorgente:
Turisti, se volete vedere il contenuto nascosto di questo post, vi pregoRisposta






Precedente:L'istruzione CREATE DATABASE non è consentita all'interno di una transazione multi-istruzione
Prossimo:Supporta i campi dinamici di Linq's OrderBy
 Padrone di casa| Pubblicato su 10/04/2017 10:20:30 |
La classe TransactionScope può essere usata annidata, e se vuoi usarla annidata, devi specificare il parametro TransactionScopeOption nel blocco di transazione annidata. Il parametro predefinito è Required.

Quando la TransactionScopeOption della classe annidata TransactionScope è Required, puoi vedere il seguente risultato: le loro transazioni hanno lo stesso ID. Inoltre, è vero successo solo quando entrambi i TransactionScope sono completi.

Se imposti TransactionScopeOption su RequiresNew, i blocchi di transazione annidati e quelli esterni sono indipendenti e non si influenzano a vicenda.

TransactionScopeOption è impostato su Suppress per annullare la transazione del blocco corrente, cosa generalmente raramente utilizzata.
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com