Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 25346|Vastaus: 2

[Lähde] TransactionScopen käyttö C#:ssa

[Kopioi linkki]
Julkaistu 10.4.2017 10.16.25 | | | |
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






Edellinen:CREATE DATABASE -lausetta ei sallita monilauseisen transaktion sisällä
Seuraava:Make Linq's OrderBy tukemaan dynaamisia kenttiä
 Vuokraisäntä| Julkaistu 10.4.2017 10.20.30 |
TransactionScope-luokkaa voi käyttää sisäkkäisenä versiona, ja jos haluat käyttää sitä sisäkkäisessä tilassa, sinun täytyy määrittää TransactionScopeOption-parametri sisäkkäisessä transaktiolohkossa. Oletusparametri on Vaadittu.

Kun sisäkkäisen TransactionScope-luokan TransactionScopeOption vaaditaan, näet seuraavan tuloksen: niiden transaktioilla on sama ID. Lisäksi todellinen menestys on vasta, kun molemmat TransactionScopet ovat valmiita.

Jos asetat TransactionScopeOption RequiresNew-arvoon, sisäkkäiset transaktiolohkot ja ulommat transaktiolohkot ovat toisistaan riippumattomia eivätkä vaikuta toisiinsa.

TransactionScopeOption on asetettu Suppress-tilaan peruuttamaan nykyisen lohkon transaktio, jota yleensä käytetään harvoin.
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com