Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 49435|Răspunde: 1

[Sursă] Entitățile EF de tip append "XXXX" eșuează pentru că altele...

[Copiază linkul]
Postat pe 12.05.2021 09:43:53 | | |
EF adaugă o entitate de tip "XXXX" care eșuează deoarece o altă entitate de același tip are deja aceeași valoare a cheii primare. Când se folosește metoda "Atașa" sau setezi starea entității la "Neschimbat" sau "Modificat"

Pentru că alte entități de același tip au deja aceeași valoare cheie principală. Acest comportament poate apărea atunci când se folosește metoda "Atașa" sau când setezi starea unei entități la "Neschimbată" sau "Modificată" dacă vreo entitate din desen are o valoare a cheii conflictuală
Acest lucru se poate datora faptului că unele entități sunt noi și nu au primit încă o cheie-valoare generată de baza de date (entitate nouă), caz în care graficul este urmărit folosind metoda "Adaugă" sau starea entității "Adăugat", iar starea entității ne-noi este setată la "Neschimbată" sau "Modificată" corespunzător.
De fapt, această eroare este că atunci când EF deschide o tranzacție, există deja o dată cu aceeași cheie primară în contextul EF, iar eu personal întâmpin această problemă în diverse situații:

Situația 1:

Modificând, iterând prin aceleași date dintr-un tabel (de exemplu, iterarea cantității de inventar a aceluiași obiect), acest caz ar trebui să fie prima dată când cache-ul de context nu este șters

Codul este următorul:


Bucla de aici nu raportează o eroare prima dată, iar a doua oară va fi eroată

Soluție:


Situația 2:

Operația de buclă adaugă mai întâi o bucată de date, apoi modifică datele

Codul este următorul:


Erorile sunt raportate și aici, în special pentru noi EF sau entități noi

Soluție:








Precedent:Testul de performanță Redis Benchmark
Următor:ASP.NET Explicație detaliată a middleware-ului Middleware din Core (9).
Postat pe 22.09.2021 20:55:57 |
Învață să înveți...
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com