Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 23237|Válasz: 1

[Forrás] Tömeges beküldés és tranzakciófeldolgozás az Entity Framework-ben

[Linket másol]
Közzétéve 2017. 04. 08. 22:10:01 | | |

A SaveChanges() használata az Entity Frameworkben nagyon gyakori, és a SaveChanges() hívása egyetlen adatmódosítás vagy törlés után visszaadja az impact rekordok számát.

A köteges módosításhoz vagy adattörléshez szükséged van a SaveChanges(false)+AcceptAllChanges() módszerre.



A SaveChanges(false) csupán egy értesítés arról, hogy az EF-nek végrehajtania kell egy műveletet az adatbázison, amely memóriában függőben van, és szükség esetén vissza lehet állítani, például az AcceptAllChange() commit valóban sikeres, és az EF visszavonja a SaveChanges(false) műveletét.



Elosztott tranzakciós műveleteknél szükséges a TransactionScope segítségével kezelni, és sokszor így írunk:


De az ilyen írás kockázatos, hamis
Például a kontextus1. SaveChanges() sikerült, context2. A SaveChanges() problémás, mi a hatókörben vagyunk. Complete() akkor szűnik meg, amikor a tranzakció elkötelezett és a Context1 sikeresen végrehajtható

(Az én praxisomban a fentiek valójában normálisan vissza is lehet fordítani, ha kontextusban vagyunk 1. SaveChanges() sikerült, context2. A SaveChanges() problémás, egyik sem sikeresen hajtható el!
Hivatkozz a projektedben a System.Transaction névteret használva. TransactionScope meghatározása használatban egyenértékű egy dolgok körének meghatározásával, vagyis ennek a tranzakciónak a hatóköre a használaton belül van. A használó távcsőben, ha nincs scope-. Complete() parancsot ad, akkor a távcső automatikusan visszafordítja az összes műveletet, ha megsemmisül. )

Ez nem feltétlenül felel meg az igényeinknek. Ha a context1 és a context2 egyszerre sikeresen végrehajtható, vagy egyik sem sikerül, akkor apró módosításokat kell végeznünk a kódon, például a következő kódot kell használni:



A SaveChanges(false) segítségével először elküldjük a szükséges adatbázis-műveleti parancsokat az adatbázisnak, ami azt jelenti, hogy a context1 és a context2 valójában nem változott, ha a tranzakciót leállítják és automatikusan visszafordítják, egyik változás sem köteleződik el az adatbázisban, így sikeresen vissza lehet állítani.




Előző:Az EF6 a Database.BeginTransaction rendszert használja a tranzakciók kezelésére
Következő:EF ORM Fejlesztési és Használati sorozat oktatóanyagok
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com