EF Core“无法跟踪实体类型'X'的实例,因为具有相同密钥的另一个实例......”

时间:2018-05-11 13:42:27

标签: c# entity-framework-core ef-core-2.0

所以我收到以下错误消息:

  

无法跟踪实体类型“X”的实例,因为已经跟踪了另一个{...}键值相同的实例

当我们合并子项集合时会发生这种情况。回到EF 6,以下模式可以正常工作:

dbContext.Items.RemoveRange(owner.Items);
owner.Items = newItems.Select(i => dbContext.Items.Add(new Item(i)).ToList();

在EF Core中,这对于具有复合键的项目不起作用。我的猜测是删除的项目被标记为删除但仍然被跟踪。因此,当具有匹配的复合键的新的添加时,SaveChanges()会失败,因为有2个实体被跟踪具有相同的标识符。

那么,假设不应再使用上述模式并使用完全外连接正确合并项目是否安全?

或者,有没有办法让它像在EF 6中一样工作?

0 个答案:

没有答案