Как обновить первичный ключ из Entity Framework?
у меня есть таблица
eventid int -- not PK key but with autoincrement
jobid -- PK autoincrement disabled
userid int -- PK autoincrement disabled
для обновления jobID я делаю следующее:
var itemforupdate = context.table.where(n=>n.eventid == someparameter).FirstorDefault()
Я правильно получаю элемент из базы данных, но при назначении:
itemforupdate.jobID = 5;
context.SaveChanges();
после context.SaveChanges()
Я получаю сообщение об ошибке:
свойство 'jobID' является частью ключевой информации объекта и невозможно изменить
Как обновить jobID из Entity Framework для решения этой проблемы?
1 ответов
обновление столбцов первичного ключа не является хорошей практикой с EntityFramework. Это сбивает с толку EF, потому что он изменяет идентичность объекта и делает сохранение копии в памяти и копии данных в базе данных в синхронизации очень проблематичным. Так что это запрещено.
просто не обновляйте первичные ключи. Вместо этого удалите одну строку и вставьте новую.
кроме того, вы можете обновить первичный ключ непосредственно с помощью хранимой процедуры или другого запроса.