Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 23237|Odpověď: 1

[Zdroj] Hromadné podávání a zpracování transakcí v rámci Entity

[Kopírovat odkaz]
Zveřejněno 08.04.2017 22:10:01 | | |

Používání SaveChanges() v Entity Framework je velmi časté a volání SaveChanges() po jediné úpravě nebo smazání dat vrátí počet záznamů o dopadu.

Pro použití dávkové úpravy nebo hromadného mazání dat potřebujete metodu SaveChanges(false)+AcceptAllChanges().



SaveChanges(false) je pouze oznámení, že EF potřebuje provést operaci na databázi, která je čekající v paměti a může být zrušena, když je to nutné, například že commitování AcceptAllChange() je skutečně úspěšné a EF zruší operaci SaveChanges(false).



Při řešení distribuovaných transakčních operací je nutné použít TransactionScope k jejich zpracování, a často píšeme takto:


Ale psaní takhle je riskantní, nepravdivé
Například kontext1. SaveChanges() uspěl, context2. SaveChanges() je problematický, jsme v rozsahu. Complete() skončí po potvrzení transakce a úspěšném vykonání Context1

(V mé praxi lze výše uvedené skutečně normálně vrátit zpět, pokud je kontext1. SaveChanges() uspěl, context2. SaveChanges() je problematický, ani jeden se nespustí úspěšně!
Odkazujte na jmenný prostor using System.Transaction ve svém projektu. Definování rozsahu transakce v použití je ekvivalentní definování rozsahu věcí, tj. rozsah této transakce je v rámci použití. V použití zaměřovače, pokud není zaměřovač. Příkaz dokončit (dokončit), pak se zaměřovač automaticky vrátí zpět ke všem operacím po zničení. )

To nemusí nutně splňovat naše potřeby. Pokud potřebujeme, aby kontext1 a kontext2 byly úspěšně vykonány současně, nebo ani jeden neuspěje, musíme provést drobné úpravy kódu, například použitím následujícího kódu:



Používáme SaveChanges(false) k odeslání potřebných příkazů pro operace databáze jako první, což znamená, že context1 a context2 se ve skutečnosti nezměnily, pokud je transakce ukončena a automaticky vrácena, žádná změna není skutečně uložena do databáze, takže ji lze úspěšně vrátit zpět.




Předchozí:EF6 používá Database.BeginTransaction ke správě transakcí
Další:Návody na vývoj a použití série EF ORM
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com