【问题标题】:"The property 'Modified' is part of the object's key information and cannot be modified“属性‘已修改’是对象的关键信息的一部分,不能修改
【发布时间】:2014-10-23 09:54:56
【问题描述】:

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

“已修改”属性是对象的关键信息的一部分,并且 无法修改。

但修改后的不是主键,也不是任何复合 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; }            
    }
}

【问题讨论】:

  • 你能显示Item类吗?或者您是否正在以流利的方式设置任何额外内容?
  • 如果模型是从数据库生成的,它可能被映射为一个键。如果表没有定义主键,生成器将尝试选择应该用作键的字段。

标签: c# entity-framework orm entity-framework-6.1


【解决方案1】:

这似乎是一个损坏或映射不正确的数据模型。

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

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

之后它就正常工作了。

我的假设是 EF 以某种方式错误地将 Modified 字段映射到数据库中的 OK。

【讨论】:

    猜你喜欢
    • 2011-03-12
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多