当我尝试使用Entity Framework第二次编辑同一条记录时,我不断收到错误:
附加类型为' DomainClasses.Item'的实体失败是因为 另一个相同类型的实体已经拥有相同的主键 值。使用'附加'方法或设置 一个实体的状态为“未变”'或者'修改'如果有任何实体 图表具有冲突的键值。这可能是因为某些实体 是新的,尚未收到数据库生成的键值。在 这种情况使用'添加'方法或“添加”#39;实体状态跟踪 图表然后将非新实体的状态设置为“未更改”。要么 '变形'酌情。
代码非常简单:
public void InsertOrUpdate(Item entity)
{
if (entity.Id == default(int))
{
_context.SetAdd(entity);
}
else
{
_context.SetModified(entity);
}
_context.SaveChangesAsync();
}
答案 0 :(得分:0)
如果您已经加载了具有跟踪功能的实体,则可能会发生此错误。然后你再试图再次附加失败。如果在调用InsertOrUpdate之前加载实体AsNoTracking(),则错误应该消失。