W swojej edycji wspominasz, że „Wiele dodanych jednostek może mieć ten sam klucz podstawowy”. błąd. Nie znając wszystkich szczegółów tego, co tutaj robisz, wygląda na to, że tworzysz relację z bytem - z których są dwie w kontekście o tym samym identyfikatorze. Są to prawdopodobnie nowe podmioty, które nie zostały jeszcze zapisane, przez co otrzymują automatycznie wygenerowany identyfikator z bazy danych. Jeśli relacja jest oparta na identyfikatorze, istnieje pewna niejednoznaczność, ponieważ Entity Framework nie jest w stanie określić, które z nowych jednostek faktycznie wskazuje relacja — oba mają identyfikator, na który wskazuje relacja.
Istnieją dwie potencjalne poprawki.
-
Generuj tymczasowy, unikalny identyfikator dla jednostek, gdy są one tworzone w kontekście. Entity Framework odrzuci to, gdy jednostka zostanie zapisana, ale do tego momentu może jej użyć do odróżnienia jednej nowej jednostki od drugiej. W przeszłości używałem w tym celu ujemnych liczb całkowitych.
-
Nie twórz relacji przy użyciu identyfikatorów, ale raczej odwołań do encji. Jeśli Entity Framework ma bezpośrednie odniesienie do jednostki, nie musi przechodzić przez proces identyfikacji jednostki na podstawie nieunikalnych identyfikatorów i nie powinien mieć tego problemu.