如何从Entity Framework更新主键?

R01*_*R01 10 c# sql entity-framework

我有桌子

eventid int -- not PK key but with autoincrement
jobid -- PK autoincrement disabled
userid  int   -- PK autoincrement disabled
Run Code Online (Sandbox Code Playgroud)

要更新jobID,我会执行以下操作:

var itemforupdate = context.table.where(n=>n.eventid == someparameter).FirstorDefault()
Run Code Online (Sandbox Code Playgroud)

我正确地从数据库中获取项目,但在分配时:

itemforupdate.jobID = 5;
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

之后context.SaveChanges()我得到的错误:

属性"jobID"是对象的关键信息的一部分,无法修改

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

sar*_*rin 17

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

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

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