";该物业';修改';是对象的一部分';s密钥信息,无法修改

本文关键字:修改 密钥 信息 一部分 quot 对象 | 更新日期: 2023-09-27 18:27:28

我试图使用EF 6.1更改行中的字段,收到以下错误:

属性"Modified"是对象密钥信息的一部分,并且无法修改。

然而,修饰不是主键,也不是任何化合物PK的一部分。

但是这是我搜索条件的一部分。

var item = _src.Items.Where(x => x.Modified).OrderBy(x => x.DateModified).FirstOrDefault();
 ...
 MarkItemAsSynced(item)

    private void MarkItemAsSynced(Item item)
    {
        item.Modified = false;     
        _src.SaveChanges();        <<<< ERROR THORWN
    }

是什么原因导致了这个问题?

只是为了再次确认,"修改"的项目不是PK。

该表确实有一个定义的PK。

型号类别:

    public partial class Item
    {
        public int Id { get; set; }
        ...
        public bool Modified { get; set; }            
    }
}

";该物业';修改';是对象的一部分';s密钥信息,无法修改

它似乎是一个损坏或映射错误的数据模型。

我通过以下操作修复了它:

  1. 删除了.edmx模型中的表
  2. 然后我重新添加了表格
  3. 保存模型

之后它就正常工作了。

我的假设是EF在某种程度上错误地将Modified字段映射到了数据库中的OK。