Как обновить первичный ключ из 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, потому что он изменяет идентичность объекта и делает сохранение копии в памяти и копии данных в базе данных в синхронизации очень проблематичным. Так что это запрещено.

просто не обновляйте первичные ключи. Вместо этого удалите одну строку и вставьте новую.

кроме того, вы можете обновить первичный ключ непосредственно с помощью хранимой процедуры или другого запроса.