Operacijos apimtis
"TransactionScope" yra "System.Transactions" klasė, kuri pateikiama kartu su .NET sistema. Jei "TransactionScope" išleidžiamas neiškviečiant "Complete" metodo ("TransactionScope" įdiegia "IDisposible" sąsają, rekomenduojama naudoti bloką), jis laikys, kad operacija nepavyko, ir atšauks vykdymą. "TransactionScope" yra naudinga API, kuri valdo operacijas ("aplink" reiškia, kad duomenų bazės, palaikančios "TransactionScope", gali automatiškai valdyti operacijas), o dauguma pagrindinių duomenų bazių palaiko šią API, įskaitant "Microsoft" MSSQL, žinoma. Jei naudojate duomenų bazę ar su operacijomis susijusią sistemą, kuri nepalaiko "TransactionScope", vis tiek galite naudoti perėmėją, tačiau turėsite modifikuoti kodą, kad naudotumėte tinkamą API, palaikančią operacijas (pvz., naudodami "BeginTransaction" API, kad duomenų bazės teikėjas įdiegtų IDbTransactions).
Aukščiau yra pasirinktinė išimtis, kurią sąmoningai išmečiau, kad pamatyčiau, ar ją galima normaliai atšaukti, o žemiau esantis paveikslėlis yra normalus vykdymas be išimčių.
TransactionScope metodo Complete iškvietimas rodo, kad operacija sėkmingai įvykdyta. Žinoma, jei sandoris visada vykdomas, sandoris nereikalingas. Priežastis, kodėl yra sandorių, yra išspręsti kelių operacijų nesėkmės problemą, o jei įvyks gedimas, ji bus atšaukta. Nes . .NET TransactionScope, nėra aiškaus atšaukimo skambučio, o artimiausias atitikmuo yra naudoti Dispose metodą. Jei TransactionScope išleidžiamas prieš iškviečiant metodą Užbaigti, tada TransactionScope atlieka atšaukimą. Todėl, norint atlikti atšaukimą, prie operacijos perėmėjo veido reikia pridėti iškvietimą Disponuoti.
Galiausiai pridėkite kodą!
Pridedamas šaltinio kodas:Turistai, jei norite pamatyti paslėptą šio įrašo turinį, prašome Atsakyti
|