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, palun Vastuse
|