Bruken av SaveChanges() i Entity Framework er svært hyppig, og å kalle SaveChanges() etter en enkelt endring eller sletting av data returnerer antall påvirkningsposter.
For å bruke batch-modifikasjon eller batch-sletting av data, trenger du metoden SaveChanges(false)+AcceptAllChanges().
SaveChanges(false) er bare en varsling om at EF må utføre en operasjon på databasen, som venter i minnet og kan angres ved behov, for eksempel når AcceptAllChange()-committing er virkelig vellykket, og EF vil angre operasjonen SaveChanges(false).
Når man håndterer distribuerte transaksjonsoperasjoner, er det nødvendig å bruke TransactionScope for å håndtere det, og mange ganger skriver vi slik:
Men å skrive slik er risikabelt, falskt For eksempel, kontekst1. SaveChanges() lyktes, kontekst2. SaveChanges() er problematisk, vi er innenfor omfang. Complete() vil avsluttes når transaksjonen er gjennomført, og Context1 har blitt utført med suksess
(I min praksis kan det ovennevnte faktisk rulles tilbake normalt, hvis kontekst1. SaveChanges() lyktes, kontekst2. SaveChanges() er problematisk, ingen av dem vil bli utført vellykket! Referer til det brukende System.Transaction-navnerommet i prosjektet ditt. Å definere en TransactionScope i bruk er ekvivalent med å definere et omfang av ting, det vil si at omfanget av denne transaksjonen er innenfor bruk. I det brukende omfanget, hvis det ikke finnes noe omfang. Fullfør()-kommandoen, så vil omfanget automatisk rulle tilbake alle operasjoner når det ødelegges. ) Dette dekker kanskje ikke nødvendigvis våre behov. Hvis vi trenger at kontekst1 og kontekst2 skal kjøres med suksess samtidig, eller ingen lykkes, må vi gjøre små justeringer i koden, som å bruke følgende kode:
Vi bruker SaveChanges(false) for å sende nødvendige databaseoperasjonskommandoer til databasen først, noe som er for å merke seg at context1 og context2 egentlig ikke har endret seg; hvis transaksjonen avsluttes og rulles automatisk tilbake, blir ingen av endringene faktisk gjort i databasen, så den kan rulles tilbake med suksess.
|