Обновление уникального неосновного ключа

В моей БД у меня есть столбец, определенный как уникальный индекс. Я сгенерировал свою модель 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 с найденным объектом.

Другие вопросы по тегам