实体框架 - 更新错误

时间:2014-07-02 19:53:43

标签: entity-framework

当我尝试使用Entity Framework第二次编辑同一条记录时,我不断收到错误:

  

附加类型为' DomainClasses.Item'的实体失败是因为   另一个相同类型的实体已经拥有相同的主键   值。使用'附加'方法或设置   一个实体的状态为“未变”'或者'修改'如果有任何实体   图表具有冲突的键值。这可能是因为某些实体   是新的,尚未收到数据库生成的键值。在   这种情况使用'添加'方法或“添加”#39;实体状态跟踪   图表然后将非新实体的状态设置为“未更改”。要么   '变形'酌情。

代码非常简单:

public void InsertOrUpdate(Item entity)
        {
        if (entity.Id == default(int)) 
            {
            _context.SetAdd(entity);
            }
        else        
            {
            _context.SetModified(entity);
            }

        _context.SaveChangesAsync();
}

1 个答案:

答案 0 :(得分:0)

如果您已经加载了具有跟踪功能的实体,则可能会发生此错误。然后你再试图再次附加失败。如果在调用InsertOrUpdate之前加载实体AsNoTracking(),则错误应该消失。