所以我收到以下错误消息:
无法跟踪实体类型“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中一样工作?