Entity Framework ID列負の値

asp.net-core entity-framework-core postgresql

質問

私は、Entity Frameworkコア経由でPostgreSQLデータベースとやりとりするいくつかのREST Webサービスを実装するASP.NET Core 1.0 Webアプリケーションを持っています。

私のモデルでは、次のパターンを利用するさまざまなコードファーストエンティティクラスがあります。

[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

明らかに、これはデータベース内の自動インクリメントユニークキーID列に対応します。

問題は、間違いなくどこかで何らかの欠陥があることが原因で、時には私がまだ理解していない理由から、Idの値が非常に大きな負の整数であることです。

-2147482645

通常は、1から始まる正則な昇順の整数値です。

それを引き起こす原因は何ですか?

受け入れられた回答

この問題は、 Add()呼び出しで挿入される前にエンティティのUpdate()を呼び出すことと関係していました。挿入されていないエンティティでUpdate()を呼び出すと、例外がスローされます。しかし、例外をキャッチしてエンティティを追加する必要があるというフラグとして使用することはオプションではないようです。そうすることによって、一貫して負のId値が後続の挿入に使用されるためです。解決策は、エンティティがまだ存在しないことを他の手段で検出し、 Update()をデフォルトアクションとして使用するのではなく、 Add()を適切に呼び出して挿入することでした。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ