【问题标题】:How to update primary key from Entity Framework?如何从实体框架更新主键?
【发布时间】:2017-08-10 22:36:26
【问题描述】:

我有桌子

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”是对象的关键信息的一部分,并且 无法修改

如何从实体框架更新jobID来解决这个问题?

【问题讨论】:

  • 我不是实体框架方面的专家,但您不能将对象的键设置为 eventid(因为它无论如何都是自动增量列)?
  • 我只是使用唯一的 eventid 从数据库中获取项目并尝试从 EF 更新 jobid 但它给出了错误

标签: c# sql entity-framework


【解决方案1】:

更新主键列不是 EntityFramework 的好习惯。它使 EF 感到困惑,因为它改变了对象的身份,并使内存中的副本和数据的数据库中的副本保持同步非常成问题。所以是不允许的。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多