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 prego Risposta
|