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

Rodinys: 23237|Atsakyti: 1

[Šaltinis] Masinis pateikimas ir operacijų apdorojimas "Entity Framework"

[Kopijuoti nuorodą]
Paskelbta 2017-04-08 22:10:01 | | |

SaveChanges() naudojimas objektų sistemoje yra labai dažnas, o iškvietus SaveChanges() po vieno duomenų modifikavimo ar panaikinimo pateikiamas poveikio įrašų skaičius.

Norint naudoti paketinį modifikavimą arba paketinį duomenų naikinimą, reikia metodo SaveChanges(false)+AcceptAllChanges().



SaveChanges(false) yra tik pranešimas, kad EF turi atlikti operaciją duomenų bazėje, kuri laukia atmintyje ir gali būti anuliuota, jei reikia, pvz., AcceptAllChange() įsipareigojimas tikrai sėkmingas, o EF anuliuos SaveChanges(false) operaciją.



Atliekant paskirstytas operacijų operacijas, būtina naudoti "TransactionScope", ir daug kartų rašysime taip:


Bet rašyti taip yra rizikinga, klaidinga
Pavyzdžiui, kontekstas1. SaveChanges() pavyko, kontekstas2. SaveChanges() yra problematiškas, mes esame aprėptyje. Complete() bus nutrauktas, kai operacija bus įvykdyta, o Context1 bus sėkmingai įvykdytas

(Mano praktikoje, pirmiau minėtas iš tikrųjų gali būti atšauktas normaliai, jei kontekstas1. SaveChanges() pavyko, kontekstas2. SaveChanges() yra problematiška, nei bus sėkmingai vykdoma!
Nurodykite savo projekto vardų sritį naudojant System.Transaction. TransactionScope apibrėžimas naudojant yra tolygus dalykų apimties apibrėžimui, t. y. šio sandorio apimtis yra naudojimo. Taikymo srityje, jei taikymo srities nėra. Complete() komanda, tada aprėptis automatiškai atšauks visas operacijas, kai bus sunaikinta. )

Tai nebūtinai atitinka mūsų poreikius. Jei mums reikia, kad context1 ir context2 būtų sėkmingai vykdomi vienu metu, arba nė vienas iš jų nepavyksta, turime atlikti nedidelius kodo pakeitimus, pvz., naudoti šį kodą:



Mes naudojame SaveChanges(false), kad pirmiausia į duomenų bazę siųstume reikiamas duomenų bazės operacijų komandas, o tai reiškia, kad context1 ir context2 iš tikrųjų nepasikeitė, jei operacija nutraukiama ir automatiškai atšaukiama, nė vienas pakeitimas iš tikrųjų nėra įtrauktas į duomenų bazę, todėl jį galima sėkmingai atšaukti.




Ankstesnis:EF6 naudoja Database.BeginTransaction operacijoms valdyti
Kitą:EF ORM kūrimo ir naudojimo serijos vadovėliai
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