我有桌子
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来解决这个问题?
答案 0 :(得分:16)
使用EntityFramework更新主键列不是一个好习惯。它会混淆EF,因为它会更改对象的身份,并使内存中的副本和数据库的数据库副本保持同步非常有问题。所以这是不允许的。
只是不要更新主键。而是删除一行并插入一行。
或者,您可以使用存储过程或其他查询直接更新主键。