为什么 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 以获取评论中提供的信息
我正在使用 InMemoryDatabase 进行单元测试。在我的单元测试中,我通过 _context.Add(new Item(){Description="desciption"}).
在我的测试中,我添加了一个新实体。我遇到了关键冲突。
我的存储库方法
//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 以获取评论中提供的信息