帶有Postgres的EF Core正在生成負主鍵

c# entity-framework entity-framework-core postgresql

我正在使用Entity Framework Core和Postgres提供程序,每個實體都有一個帶有ValueGeneratedOnAdd的int主鍵。到目前為止,這一直在完美地運作。我不時地用我的遷移和數據庫進行dotnet ef migrations add InitialDb並開始使用dotnet ef migrations add InitialDb 。在最後一次刷新之後,我的主鍵已經開始從我假設為int.Min -2147482647 。他們過去從1開始。

我不確定是什麼導致這種情況,我想回到主鍵從1開始增加。有沒有辦法實現這一點?

一般承認的答案

我在代碼中發現了一些導致此行為的內容。在我的基本存儲庫中添加新實體時,我更改了DbContext.Set<T>().Add(entity)DbContext.Attach(entity).State = EntityState.Added;

我這樣做的原因是因為使用附加EF時會自動檢測現有的相關實體。僅使用add將嘗試再次添加相關實體,無論它們是否已存在於db中。

我不知道為什麼在生成ID時會突然切換到負int。


熱門答案

EF Core會生成臨時ID,然後在調用SaveChanges時將其替換為實際ID。這是設計行為。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因