为什么 EF Core 2.0 似乎生成了错误的值?

Why is EF Core 2.0 seemingly generating the wrong value?

我正在使用 InMemoryDatabase 进行单元测试。在我的单元测试中,我通过 _context.Add(new Item(){Description="desciption"}).

将一些数据添加到派生的 DbContext

在我的测试中,我添加了一个新实体。我遇到了关键冲突。

我的存储库方法

//Before this method runs _context.Item already has one Item with Id = 1 which I set up in my unit test.
public async Task CreateItem(ItemDM dm){
    Item newItem = new Item(){Name = dm.RelatedItem.Process.Name}; //Id is zero here
    _context.Add(newItem); // The Error happens here
    _context.SaveChanges();
}

我得到的错误是 "same key value for {"id"} 已经被处理。附加现有实体时,确保只附加一个具有给定键值的实体实例。"

我的理解是 EF Core 会适当地增加 Id,但事实似乎并非如此。

发生这种情况的原因是我添加了具有硬编码值的实体。例如。 .Add(new Item(){Id = 1}) 我的假设是自动生成功能会识别这一点并进行相应更新。我错了

支持@Ivan Stoev 以获取评论中提供的信息