See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 23237|Vastuse: 1

[Allikas] Massiline esitamine ja tehingute töötlemine Entity Frameworkis

[Kopeeri link]
Postitatud 08.04.2017 22:10:01 | | |

SaveChanges() kasutamine Entity Frameworkis on väga sage ning SaveChanges() kutsumine pärast ühte andmete muutmist või kustutamist tagastab mõjukirjete arvu.

Partii muutmise või andmete partiikustutamise kasutamiseks on vaja meetodit SaveChanges(false)+AcceptAllChanges().



SaveChanges(false) on lihtsalt teade, et EF peab andmebaasis operatsiooni tegema, mis on mälus ootel ja vajadusel saab tagasi võtta, näiteks AcceptAllChange() pühendumine on tõeliselt edukas ning EF tühistab SaveChanges(false) toimingu.



Kui tegeleda hajutatud tehinguoperatsioonidega, on vajalik kasutada TransactionScope'i selle haldamiseks ning sageli kirjutame nii:


Aga selline kirjutamine on riskantne, vale
Näiteks kontekst1. SaveChanges() õnnestus, kontekst2. SaveChanges() on problemaatiline, me oleme selle ulatuses. Complete() lõpeb siis, kui tehing on tehtud ja Context1 on edukalt täidetud

(Minu praktikas saab ülaltoodu tegelikult normaalselt tagasi pöörata, kui kontekstis1. SaveChanges() õnnestus, kontekst2. SaveChanges() on probleemne, kumbki ei õnnestu edukalt täita!
Viita oma projektis kasutatavale System.Transaction nimeruumile. TransactionScope'i defineerimine kasutamises on võrdne asjade ulatuse määratlemisega, st selle tehingu ulatus on kasutamise piires. Kui ulatust pole, siis kasutusulatuses. Complete() käsk, siis sihik keerab automaatselt kõik operatsioonid tagasi, kui hävitatakse. )

See ei pruugi tingimata meie vajadusi täita. Kui vajame, et kontekst1 ja kontekst2 õnnestuksid korraga edukalt või kumbki ei õnnestu, peame tegema väikeseid muudatusi koodis, näiteks kasutades järgmist koodi:



Kasutame SaveChanges(false) vajalike andmebaasi operatsioonikäskude saatmiseks esmalt andmebaasile, mis tähendab, et context1 ja context2 pole tegelikult muutunud; kui tehing lõpetatakse ja automaatselt tagasi keeratakse, ei ole kumbki muudatus tegelikult andmebaasis kinnitatud, seega saab selle edukalt tagasi pöörata.




Eelmine:EF6 kasutab tehingute haldamiseks Database.BeginTransaction
Järgmine:EF ORM arendus- ja kasutussarja õpetused
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com