Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 23237|Odgovoriti: 1

[Vir] Množično oddajanje in obdelava transakcij v okviru entitet

[Kopiraj povezavo]
Objavljeno na 8. 04. 2017 22:10:01 | | |

Uporaba SaveChanges() v Entity Framework je zelo pogosta, klic SaveChanges() po eni sami spremembi ali izbrisu podatkov pa vrne število zapisov o vplivu.

Za uporabo serijskega spreminjanja ali brisanja podatkov potrebujete metodo SaveChanges(false)+AcceptAllChanges().



SaveChanges(false) je zgolj obvestilo, da mora EF izvesti operacijo na bazi podatkov, ki je v čakanju v pomnilniku in jo je mogoče razveljaviti, ko je potrebno, na primer če je AcceptAllChange() resnično uspešna in EF razveljavi operacijo SaveChanges(false).



Pri obravnavi porazdeljenih transakcijskih operacij je potrebno uporabiti TransactionScope za njihovo obdelavo, in pogosto zapišemo takole:


A pisanje na tak način je tvegano, lažno
Na primer, kontekst1. SaveChanges() je uspel, context2. SaveChanges() je problematičen, smo v obsegu. Complete() se zaključi, ko je transakcija potrjena in je Context1 uspešno izveden

(V moji praksi se zgoraj navedeno dejansko lahko normalno vrne, če je kontekst1. SaveChanges() je uspel, context2. SaveChanges() je problematičen, nobena ne bo uspešno izvedena!
V svojem projektu se sklicujte na imenski prostor using System.Transaction. Opredelitev TransactionScope v uporabi je enakovredna opredelitvi obsega stvari, tj. obseg te transakcije je znotraj uporabe. V uporabi daljnogleda, če ni teleskopa. Ukaz Complete(), nato bo scope samodejno povrnil vse operacije, ko jih uniči. )

To morda ne bo nujno ustrezalo našim potrebam. Če potrebujemo, da se kontekst1 in kontekst2 uspešno izvajata hkrati, ali če nobeden ne uspe, moramo narediti majhne prilagoditve kode, na primer z uporabo naslednje kode:



Uporabljamo SaveChanges(false), da najprej pošljemo potrebne ukaze za operacije baze podatkov, kar pomeni, da kontekst1 in kontekst2 v resnici nista spremenila; če je transakcija prekinjena in samodejno vrnjena nazaj, nobena sprememba ni dejansko potrjena v bazo, zato jo je mogoče uspešno povrniti.




Prejšnji:EF6 uporablja Database.BeginTransaction za upravljanje transakcij
Naslednji:Vodiči za razvoj in uporabo serij EF ORM
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com