Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 3308|Atsakyti: 0

[Šaltinis] EF sutapimo išimtis DbUpdateConcurrencyException iš naujo pateikia talpyklos reikšmės užklausą

[Kopijuoti nuorodą]
Paskelbta 2023-11-01 20:30:43 | | | |
Reikalavimai: Naudokite EF optimistinius užraktus, kad galėtumėte valdyti sutapimą, jei susiduriate su sutapimu, pridėkite pakartotinio bandymo mechanizmą, pastebėkite, kad po pakartotinio bandymo pakartotinai užklausiami duomenys yra EF talpyklos duomenys, todėl visada išsaugomos išimtys.

Buvo tikimasi, kad duomenų bazės operacija paveiks 1 eilutę (-es), bet iš tikrųjų paveikė 0 eilutę (-es); Duomenys gali būti modifikuoti arba panaikinti įkėlus objektus. MatytiHipersaito prisijungimas matomas.informacijos apie optimistinių lygiagrečių išimčių supratimą ir tvarkymą.

Ši diskusija paskatino mintis apie EF 6.x ir EF Core užklausų talpyklą:Hipersaito prisijungimas matomas.

Lygiagrečios laiko žymos ir sutapimo tikrinimo skirtumo tvarkymas
https://www.itsvse.com/thread-3616-1-1.html

Kaip parodyta žemiau:



SQL scenarijus:

ASP.NET Core 6 backend kodas:

Kontrolieriaus kodas:



1 variantas (rekomenduojama)

naudotiEntityState.DetachedPažymėdami objekto būseną kaip nesekamą kontekste, pakeiskite ją taip:

Kaip parodyta žemiau:



2 variantas

Norėdami atnaujinti objekto objektą, iškvieskite metodą Reload(), kodas yra toks:

Nors pakartotinis įkėlimas taip pat gali atnaujinti EF talpyklos reikšmes,Dėl to SQL užklausos vykdomos daugiau nei vieną kartąTodėl nerekomenduojama.

Kiti du metodai, AsNoTracking netinka, o kitas nėra išbandytas.

(Pabaiga)




Ankstesnis:.NET konvertuoja duomenų bazės varbinary eilutę į baitą[] masyvą
Kitą:OpenWRT nustatymai, kad paleistumėte vykdymo komandą
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com