Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 23237|Atbildi: 1

[Avots] Lielapjoma iesniegšana un darījumu apstrāde Entity Framework

[Kopēt saiti]
Publicēts 08.04.2017 22:10:01 | | |

SaveChanges() tiek izmantots Entity Framework ļoti bieži, un, izsaucot SaveChanges() pēc vienas datu modifikācijas vai dzēšanas, tiek atgriezts ietekmes ierakstu skaits.

Lai izmantotu pakešu modifikāciju vai pakešu datu dzēšanu, ir nepieciešama metode SaveChanges(false)+AcceptAllChanges().



SaveChanges(false) ir tikai paziņojums, ka EF ir jāveic operācija datu bāzē, kas gaida atmiņā un var tikt atsaukta, ja nepieciešams, piemēram, AcceptAllChange() commit ir patiesi veiksmīga, un EF atcels SaveChanges(false) darbību.



Nodarbojoties ar sadalītām darījumu operācijām, ir nepieciešams izmantot TransactionScope, lai to apstrādātu, un daudzas reizes mēs rakstīsim šādi:


Bet rakstīt šādi ir riskanti, nepatiesi
Piemēram, konteksts1. SaveChanges() izdevās, konteksts2. SaveChanges() ir problemātisks, mēs esam tvērumā. Complete() tiks pārtraukts, kad transakcija tiks veikta un Context1 būs veiksmīgi izpildīts

(Manā praksē iepriekš minēto faktiski var atgriezt normāli, ja konteksts1. SaveChanges() izdevās, konteksts2. SaveChanges() ir problemātisks, neviens no tiem netiks veiksmīgi izpildīts!
Atsaucieties uz System.Transaction nosaukumvietu savā projektā. Darījuma darbības jomas definēšana lietošanā ir līdzvērtīga lietu apjoma definēšanai, t.i., šī darījuma darbības joma ir izmantojama. Izmantošanas tvērumā, ja nav tvēruma. Complete() komanda, tad tvērums automātiski atgriezīs visas darbības, kad tas tiks iznīcināts. )

Tas ne vienmēr atbilst mūsu vajadzībām. Ja mums ir nepieciešams, lai context1 un context2 tiktu veiksmīgi izpildīti vienlaicīgi, vai neviens no tiem neizdodas, mums ir jāveic nelielas korekcijas kodā, piemēram, izmantojot šādu kodu:



Mēs izmantojam SaveChanges(false), lai vispirms nosūtītu nepieciešamās datu bāzes operācijas komandas uz datu bāzi, kas nozīmē, ka context1 un context2 nav īsti mainījušies, ja darījums tiek pārtraukts un automātiski atcelts, neviena no izmaiņām faktiski nav saistīta ar datu bāzi, tāpēc to var veiksmīgi atcelt.




Iepriekšējo:EF6 izmanto Database.BeginTransaction, lai pārvaldītu transakcijas
Nākamo:EF ORM izstrādes un lietošanas sērijas apmācības
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com