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

我喜欢吃蔬菜

我正在使用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么会出现错误:使用EF和AutoFac的.net core 2中的“无法访问已处置的对象”?

为什么EF Core 2.1仅为2个FK添加1个索引?

为什么在创建导致异常的SELECT子句时EF Core生成错误的导航字段名称?

在 ef core 2 中处理连接的最佳方法是什么

为什么 EF Core 不断向迁移文件添加阴影属性?像 AgencyId1、AgencyId2 等

为什么没有EF Core OfType(Type type)方法?

为什么EF生成外键?

引用生成EF Core dbcontext的.NET Standard 2.0项目的.NET Framework MVC项目。为什么不起作用?

抽象 ef core 2 dbContext

.NET CORE 2 EF包含

EF Core 3 1对0关系问题

EF Core 3.0 1:0与流利的关系

从 EF Core 2 迁移到 EF Core 3

从 EF Core 2 迁移到 EF Core 3 ... 无法翻译

为什么 i *= 2 对于有符号整数似乎收敛到 0?

为什么(2 ^ 31)>> 32不是0?

为什么在Python 2中''> 0 True?

为什么1/2 == 0使用double?

为什么2 **(1 << 31)== 0?

为什么变量 y 是 0,不是 2?

为什么 glm::frustumLH_ZO 的值 [2][0] 和 [2][1] 被否定?

.NET Core 2-EF Core错误处理保存更改

为什么将DBContext放入IMemoryCache(.NET Core / EF Core)后将其丢弃

EF Core 2.0 TransactionScope错误

EF Core错误的连接语句

为什么会发生此错误“输入_2_1:0同时被获取和获取”?

为什么 g++-11 '-O2' 包含错误而 '-O0' 没问题?

'ValueError: int() base must be >= 2 and <= 36, or 0' 的错误消息为什么?

为什么枚举权限通常具有0、1、2、4值?