TransactionScope
TransactionScope on luokka System.Transactions-järjestelmässä, joka tulee .NET-kehyksen mukana. Jos TransactionScope vapautetaan kutsumatta Complete-metodia (TransactionScope toteuttaa IDisposible-rajapinnan, lohkon käyttö on suositeltavaa), se katsoo operaation epäonnistuneeksi ja palauttaa suorituksen. TransactionScope on hyödyllinen API, joka hallinnoi transaktioita ympärillä ("around" tarkoittaa, että tietokannat, jotka tukevat TransactionScopea, voivat hallita transaktioita automaattisesti), ja useimmat yleiset tietokannat tukevat tätä API:a, mukaan lukien Microsoftin oma MSSQL, tietenkin. Jos käytät tietokantaa tai jotakin transaktioon liittyvää järjestelmää, joka ei tue TransactionScopea, voit silti käyttää interseptoria, mutta sinun täytyy muokata koodiasi käyttämään sopivaa API:ta, joka tukee transaktioita (esim. BeginTransaction API:n avulla saadakseni tietokantatoimittajan IDbTransactions-toteutuksen).
Yllä oleva on räätälöity poikkeus, jonka heitin tarkoituksella nähdäkseni, voiko sen peruuttaa normaalisti, ja alla oleva kuva on normaali toteutus, ilman poikkeuksia.
TransactionScope:n Complete-metodin kutsuminen tarkoittaa, että tapahtuma suoritetaan onnistuneesti. Tietenkin, jos transaktio suoritetaan aina, transaktiota ei tarvita. Transaktioiden syynä on ratkaista useiden operaatioiden epäonnistumisongelma, ja jos virhe tapahtuu, se perutaan. Koska . .NETin TransactionScope-järjestelmässä ei ole eksplisiittistä palautuskutsua, ja lähin vastine on Dispose-menetelmä. Jos TransactionScope vapautetaan ennen Complete-metodin kutsua, TransactionScope suorittaa palautuksen. Siksi Dispose-kutsu täytyy lisätä transaktion interseptorin puolelle palautuksen suorittamiseksi.
Lopuksi, liitä koodi!
Liitteenä on lähdekoodi:Turistit, jos haluatte nähdä tämän postauksen piilotetun sisällön, olkaa hyvä Vastaus
|