繁体   English   中英

实体框架核心 PostgreSQL 插入 -2147482647 Id

[英]Entity Framework Core PostgreSQL Inserting -2147482647 Id

我有一个使用 Postgres 数据库的 .NET Core 2.0 项目,我使用的是 EntityFrameworkCore.PostgreSQL (2.0.1),它为我的表 ID 插入了一个奇怪的值。

这似乎是随机发生的,似乎完全忽略了我的 ID 序列。

它插入最小的 int32 值 -2147482647 作为插入的行的 ID。 然后所有未来的插入都不会发生,它会出现这个错误:

无法跟踪实体类型“Object”的实例,因为已跟踪具有相同 {'Id'} 键值的另一个实例。 附加现有实体时,请确保仅附加一个具有给定键值的实体实例。 考虑使用 'DbContextOptionsBuilder.EnableSensitiveDataLogging' 来查看冲突的键值。

在实体保存之前,我知道它使用了一个垃圾 ID,我认为它是负面的,但是根据我的理解,当您保存该 ID 时,应该更新该 ID 以匹配您的序列。 看起来未来的插入也获得了相同的垃圾 ID,这导致了我收到的错误。

想知道是否有其他人遇到过这个问题,如果有的话是什么原因。

迟到的答案,但对于其他发现这个问题的人:是的,我已经看到了这一点,并且在 EF Core + PostgreSQL 数据库的组合中也是如此。 请确保您的主列的序列值正确! 对我们来说,“当前值”以某种方式设置不正确,因此下一个值会命中已经存在的 id。

我认为这里发生的是,这被视为新行的特殊值,但是当由于数据库原因无法插入新行时,它会向用户公开。 我认为这通常不是 Entity Framework Core 问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM