如何从Entity Framework更新主键?

时间:2015-04-16 12:43:22

标签: c# sql 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来解决这个问题?

1 个答案:

答案 0 :(得分:16)

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

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

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