Jak uniknąć System.Data.Entity.Infrastructure.DbUpdateException
Mam ten obiekt DbContext, który składa się z -
- Employee
- CompanyAddress (PK: AddressFirstLine, City)
Note: one Employee can have many CompanyAddress
Rekordy są dodawane do tabeli CompanyAddresstylko, jeżeli jakiś adres nie istnieje w tabeli CompanyAddress.
Jeśli mam dwa obiekty DBContext z bazy danych, powiedz Snapshot1, Snapshot2. Powiedz, kiedy oba te zrzuty zostały zrobione, w tabeli CompanyAddress nie było żadnych rekordów. Po wprowadzeniu zmian w Snapshot1 i zapisaniu - rekordy są zapisywane w tabeli CompanyAddress.
Kiedy dokonano zmian w Snapshot2 i zapisano za pomocą
mydataContext.SaveChanges();
wyjątek występuje:
System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while updating the entries
System.Data.SqlClient.SqlException: Violation of PRIMARY KEY constraint 'PK_CompanyAddress'. Cannot insert duplicate key in object 'dbo.CompanyAddress'
Wydaje się, że zapisywanie Snapshot1 spowodowało, że Snapshot2 był brudny, ponieważ gdy zostały zapisane z powrotem w bazie danych, oba miałypodobnie Rekordy adresu firmy.
Jakie inne wywołania / ustawienia mogę wykonać w obiekcie dbContext, aby uniknąć tego błędu?
Dziękuję Ci!