У меня возникли проблемы с попыткой вставить с использованием EF. Вот ситуация:Entity Framework: Ошибка при вставке
- Я сделал обычную вставку, когда я создал новый реестр, где PK получил возврат
MAX
функции из SQL - Затем я удалил эту строку из базы данных без EF
- Наконец , я попытался вставить новый реестр с EF, как я сделал на шаге 1
затем я получаю это сообщение из Visual Studio:
Изменения в базе данных были успешно завершены, но при обновлении контекста объекта произошла ошибка. Объект ObjectContext может находиться в несогласованном состоянии. Внутреннее сообщение об исключении: AcceptChanges не может продолжаться, потому что ключевые значения объекта конфликтуют с другим объектом в ObjectStateManager. Перед вызовом AcceptChanges убедитесь, что значения клавиш уникальны.
Чтобы проиллюстрировать мою проблему, я сделал this small video.
Что делать, чтобы решить эту проблему?
Если вы остановите свою программу между шагами 2 и 3 и перезапустите ее, что произойдет? –
В этом случае работает нормально –
Entity Framework сохраняет копию объектов в памяти при их загрузке. Поэтому, если объекты уже загружены и вы удаляете строку в базе данных, в памяти все еще есть копия. Теперь, когда вы пытаетесь вставить объект, EF видит, что уже существует существующий объект с тем же ключом в памяти (хотя он уже удален в db) и выдает ошибку. –