PostgresのEFコアが負の主キーを生成しています

c# entity-framework entity-framework-core postgresql

質問

私はPostgresプロバイダでEntity Framework Coreを使用していますが、各エンティティはValueGeneratedOnAddを持つint主キーを持っています。これまでは完璧に動作していました。今は毎回マイグレーションとデータベースを嫌い、 dotnet ef migrations add InitialDb新しいものを開始dotnet ef migrations add InitialDbます。この最後のリフレッシュ後、私の主キーはint.Min - -2147482647と仮定して生成し始め-2147482647 。彼らは1時から始まっていました。

私はこれを引き起こしたのか分かりませんし、プライマリキーを1から増やすことに戻りたいと思います。これを達成する方法はありますか?

受け入れられた回答

この現象を引き起こしたコードで変更されたものが見つかりました。私のベースリポジトリで、新しいエンティティを追加するときにDbContext.Set<T>().Add(entity)を変更しましたDbContext.Set<T>().Add(entity)DbContext.Attach(entity).State = EntityState.Added; 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は合法ですか? はい、理由を学ぶ