[英]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.