EF додає сутність типу «XXXX», яка не вдається, оскільки інша сутність того ж типу вже має таке ж первинне значення ключа. При використанні методу «Приєднати» або встановлення стану сутності на «Незмінне» або «Змінено»
Тому що інші об'єкти того ж типу вже мають однакове первинне значення ключа. Ця поведінка може виникати при використанні методу «Приєднати» або при встановленні статусу сутності на «Незмінний» або «Змінено», якщо будь-яка сутність у малюнку має суперечливе значення ключа Це може бути пов'язано з тим, що деякі сутності є новими і ще не отримали ключове значення, згенероване базою даних (нова сутність), у такому випадку граф відстежується за методом «Додати» або станом «Додано», а стан ненової сутності відповідно встановлюється як «Без змін» або «Змінено». Насправді ця помилка полягає в тому, що коли EF відкриває транзакцію, вже є дані з тим самим первинним ключем у контексті EF, і я особисто стикаюся з цією проблемою в різних ситуаціях:
Ситуація 1:
Модифікація, ітерація одних і тих самих даних у таблиці (наприклад, ітерація кількості інвентарю одного й того ж товару) має стати першим випадком, коли контекстний кеш не очищається
Код виглядає так:
Цикл тут не повідомляє про помилку з першого разу, а вдруге буде помилкою
Рішення:
Ситуація 2:
Операція циклу спочатку додає фрагмент даних, а потім змінює дані
Код виглядає так:
Тут також повідомляються про помилки, особливо для нових EF або нових суб'єктів
Рішення:
|