Användningen av SaveChanges() i Entity Framework är mycket frekvent, och anrop av SaveChanges() efter en enda ändring eller borttagning av data returnerar antalet påverkade poster.
För att använda batchmodifiering eller batchradering av data behöver du metoden SaveChanges(false)+AcceptAllChanges().
SaveChanges(false) är bara en notis om att EF behöver utföra en operation på databasen, som väntar i minnet och kan ångras vid behov, såsom att AcceptAllChange()-committing verkligen lyckas, och EF kommer att ångra operationen SaveChanges(false).
När man hanterar distribuerade transaktionsoperationer är det nödvändigt att använda TransactionScope för att hantera det, och många gånger skriver vi så här:
Men att skriva så här är riskabelt, falskt Till exempel, kontext1. SaveChanges() lyckades, kontext2. SaveChanges() är problematiskt, vi är inom räckvidd. Complete() avslutas när transaktionen är genomförd och Context1 har exekverats framgångsrikt
(I min praktik kan ovanstående faktiskt rullas tillbaka normalt, om kontext1. SaveChanges() lyckades, kontext2. SaveChanges() är problematiskt, ingen av dem kommer att köras framgångsrikt! Referera till det använda System.Transaction-namnrymden i ditt projekt. Att definiera en TransactionScope i att använda är likvärdigt med att definiera en omfattning av saker, dvs. omfattningen av denna transaktion ligger inom användning. I användningsområdet, om det inte finns något område. Complete()-kommandot, då rullar siktet automatiskt tillbaka alla operationer när det förstörs. ) Detta behöver inte nödvändigtvis uppfylla våra behov. Om vi behöver att context1 och context2 körs framgångsrikt samtidigt, eller om ingen lyckas, behöver vi göra små justeringar i koden, till exempel med följande kod:
Vi använder SaveChanges(false) för att först skicka nödvändiga databasoperationskommandon till databasen, vilket innebär att kontext1 och kontext2 egentligen inte har ändrats, om transaktionen avslutas och automatiskt rullas tillbaka så är ingen av ändringarna faktiskt kommitterade i databasen, så den kan rullas tillbaka framgångsrikt.
|