Във вашата редакция споменавате „Няколко добавени обекти може да имат един и същ първичен ключ“. грешка. Без да знаете всички подробности за това, което правите тук, звучи сякаш създавате връзка с обект - от който има две в контекста със същия идентификатор. Това вероятно са нови обекти, които все още не са запазени, което е мястото, където те получават автоматично генериран идентификатор от базата данни. Ако връзката се основава на идентификатора, тогава има известна неяснота, тъй като Entity Framework не е в състояние да определи към кои от новите обекти всъщност сочи връзката – и двете имат идентификатора, към който сочи връзката.
Има две възможни поправки.
-
Генерирайте временен, уникален идентификатор за обекти, тъй като те са създадени в контекста. Entity Framework ще отхвърли това, когато обектът бъде запазен, но до този момент може да го използва, за да разграничи един нов обект от другия. В миналото съм използвал отрицателни цели числа за тази цел.
-
Не създавайте връзките с помощта на идентификатори, а по-скоро върху препратки към обекти. Ако Entity Framework има пряка препратка към обекта, тогава не е необходимо да преминава през процеса на идентифициране на обекта въз основа на неуникални идентификатори и не би трябвало да има този проблем.