我正在使用 InMemoryDatabase 进行单元测试。在我的单元测试中,我通过以下方式向派生的 DbContext 添加了一些数据_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();
}
我得到的错误是“{"id"} 的相同键值已经被添加。附加现有实体时,确保只附加一个具有给定键值的实体实例。”
我的理解是 EF Core 会适当地增加 Id,但情况似乎并非如此。
发生这种情况的原因是我添加了带有硬编码值的实体。例如,.Add(new Item(){Id = 1})
我的假设是自动生成功能会识别这一点并相应地更新。我错了。
向@Ivan Stoev 提供评论中提供的信息的道具
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句