我有桌子
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()我得到的错误:
context.SaveChanges()
属性“ jobID”是对象键信息的一部分,无法修改
如何从实体框架更新jobID以解决此问题?
使用EntityFramework更新主键列不是一个好习惯。它使EF混乱,因为它更改了对象的身份,并使保持数据的内存中副本和数据库内副本同步非常困难。所以这是不允许的。
只是不更新主键。而是删除一行并插入新的一行。
或者,您可以使用存储过程或其他查询直接更新主键。