2013-07-07 5 views
0

В моей БД у меня есть столбец, определяемый как уникальный индекс. Я создал мою модель EF из БД (я не знаю, как эта уникальность была переведена в модель. Как это проверить?).
При попытке обновить это поле в записи с помощьюОбновление уникального непервичного ключа

entity.Users.ApplyCurrentValues(user); 

Я получаю следующее сообщение об ошибке:

An object with a key that matches the key of the supplied object could not be found in the ObjectStateManager. Verify that the key values of the supplied object match the key values of the object to which changes must be applied.

Как я могу обновить уникальный (неосновной!) Поле?

+0

Было бы полезно, чтобы увидеть вашу модель пользователя. – dbugger

ответ

0

Нам нужно будет увидеть еще один код, чтобы определить, где вы получаете объект 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 с извлеченным объектом.

Смежные вопросы