如何从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”是对象的关键信息的一部分,无法修改

如何从Entity Framework更新jobID来解决这个问题?

使用EntityFramework更新主键列不是一个好习惯。 它会混淆EF,因为它会更改对象的身份,并使内存中的副本和数据库的数据库副本保持同步非常有问题。 所以这是不允许的。

只是不要更新主键。 而是删除一行并插入一行。

或者,您可以使用存储过程或其他查询直接更新主键。