如何从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,因为它会更改对象的身份,并使内存中的副本和数据库的数据库副本保持同步非常有问题。 所以这是不允许的。
只是不要更新主键。 而是删除一行并插入一行。
或者,您可以使用存储过程或其他查询直接更新主键。