Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 25346|Atsakyti: 2

[Šaltinis] TransactionScope naudojimas C#

[Kopijuoti nuorodą]
Paskelbta 2017-04-10 10:16:25 | | | |
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šomeAtsakyti






Ankstesnis:Sakinys CREATE DATABASE neleidžiamas kelių išrašų operacijoje
Kitą:Padaryti Linq's OrderBy palaikyti dinaminius laukus
 Savininkas| Paskelbta 2017-04-10 10:20:30 |
TransactionScope klasę galima naudoti įdėtąją, o jei norite ją naudoti įdėtąją, įdėtame operacijų bloke turite nurodyti parametrą TransactionScopeOption. Numatytasis parametras yra Būtina.

Kai įdėtosios klasės TransactionScope parinktis TransactionScopeOption yra būtina, galite matyti šį rezultatą, jų operacijų ID yra tas pats. Be to, tai yra tikra sėkmė tik tada, kai abu TransactionScopes yra baigti.

Jei nustatysite TransactionScopeOption kaip RequiresNew, įdėtieji operacijų blokai ir išoriniai operacijų blokai yra nepriklausomi ir neturi įtakos vienas kitam.

TransactionScopeOption nustatyta kaip Slopinti, kad būtų atšaukta dabartinio bloko operacija, kuri paprastai naudojama retai.
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com