Обновление уникального неосновного ключа
В моей БД у меня есть столбец, определенный как уникальный индекс. Я сгенерировал свою модель EF из БД (я не знаю, как эта уникальность была переведена в модель. Как я могу это проверить?).
Когда я пытаюсь обновить это поле в записи, используя
entity.Users.ApplyCurrentValues(user);
Я получаю следующую ошибку:
Объект с ключом, который совпадает с ключом предоставленного объекта, не может быть найден в ObjectStateManager. Убедитесь, что значения ключа предоставленного объекта соответствуют значениям ключа объекта, к которому необходимо применить изменения.
Как я могу обновить уникальное (не первичное!) Поле?
1 ответ
Нам нужно увидеть еще немного кода, чтобы определить, где вы получаете user
объект, чтобы получить более четкое представление о том, что происходит.
я верю ApplyCurrentValues
используется для обновления изменений, которые были внесены в объект, который уже существует в ObjectContext
; если вы изначально не получили свой user
экземпляр из вашего контекста, вы получите ошибку выше (ошибка говорит вам, что он не может найти объект, который вы пытаетесь обновить).
MSDN: Copies the scalar values from the supplied object into the object in the ObjectContext that has the same key.
Вы вполне можете быть в состоянии Attach()
ваш user
если это отдельный объект, или вы можете загрузить user
из этого контекста, а затем использовать ApplyCurrentValues
с найденным объектом.