See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 25346|Vastuse: 2

[Allikas] TransactionScope'i kasutamine C#-s

[Kopeeri link]
Postitatud 10.04.2017 10:16:25 | | | |
Tehingute ulatus

TransactionScope on klass System.Transactionsis, mis on klass, mis tuleb .NET raamistikuga. Kui TransactionScope vabastatakse ilma Complete meetodit kutsumata (TransactionScope rakendab IDisposible'i liidest, soovitatav on kasutada plokki), siis loeb see operatsiooni ebaõnnestunuks ja keritakse täitmise tagasi.
TransactionScope on kasulik API, mis haldab tehinguid ("umb" tähendab, et andmebaasid, mis toetavad TransactionScope'i, saavad tehinguid automaatselt hallata), ja enamik peavoolu andmebaase toetab seda API-d, sealhulgas loomulikult Microsofti enda MSSQL.
Kui kasutad andmebaasi või mõnda tehinguga seotud süsteemi, mis ei toeta TransactionScope'i, võid siiski interceptorit kasutada, kuid pead oma koodi muutma, et kasutada sobivat API-d, mis toetab tehinguid (nt kasutades BeginTransaction API-d, et saada andmebaasi pakkuja IDbTransactionsi rakendus).



Ülaltoodud on kohandatud erand, mille ma tahtlikult viskasin, et näha, kas seda saab normaalselt tagasi keerata, ja allolev pilt näitab normaalset täitmist, ilma eranditeta.




TransactionScope'i Complete meetodi kutsumine näitab, et tehing on edukalt täidetud. Loomulikult, kui tehing on alati täidetud, siis tehingut pole vaja. Tehingute toimumise põhjus on lahendada mitme operatsiooni rikke probleem, ja kui tekib rike, keritakse see tagasi.
Sest . .NET-i TransactionScope'is puudub otsest tagasipööramise kutse ning lähim ekvivalent on Dispose meetodi kasutamine. Kui TransactionScope vabastatakse enne Complete meetodi kutsumist, siis TransactionScope teeb tagasipöörde. Seetõttu tuleb Dispose kutse lisada tehingu interceptori näole tagasipöörde sooritamiseks.


Lõpuks lisa kood!


Lisatud on lähtekood:
Turistid, kui soovite näha selle postituse peidetud sisu, palunVastuse






Eelmine:CREATE DATABASE lause ei ole lubatud mitme avaldusega tehingus
Järgmine:Make Linq's OrderBy toeta dünaamilisi välju
 Üürileandja| Postitatud 10.04.2017 10:20:30 |
TransactionScope klassi saab kasutada pesastatuna ning kui soovid seda pesastatuna kasutada, pead pesastatud tehinguplokis määrama TransactionScopeOption parameetri. Vaikimisi parameeter on Vajalik.

Kui pesastatud klassi TransactionScope TransactionScope on vajalik, näed järgmist tulemust: nende tehingutel on sama ID. Veelgi enam, tõeline edu on alles siis, kui mõlemad TransactionScope'id on valmis.

Kui seadistate TransactionScopeOption RebibesNew'iks, on pesastatud tehinguplokid ja välimised tehinguplokid sõltumatud ega mõjuta üksteist.

TransactionScopeOption on seatud Suppress, et tühistada praeguse ploki tehing, mida tavaliselt harva kasutatakse.
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com