實體框架標識列負值

asp.net-core entity-framework-core postgresql

我有一個ASP.NET Core 1.0 Web應用程序,它實現了一些REST Web服務,它們通過Entity Framework Core與PostgreSQL數據庫交互。

在我的模型中,我有各種​​代碼優先的實體類,它們使用以下模式:

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

顯然,這對應於數據庫中的自動遞增唯一鍵標識列。

麻煩的是,無疑是由於某些缺陷,偶爾由於我還不了解的原因,Id的值是一個非常大的負整數。

-2147482645

通常,它們是從1開始表現良好的升序整數值。

可能是什麼原因造成的?

一般承認的答案

事實證明,這個問題與實體上的Update()有關,甚至在插入Add()之前就已經插入了。自然地在非插入實體上調用Update()會導致拋出異常。但隨後捕獲異常並將其用作實體需要添加的標誌似乎不是一種選擇,因為這樣做始終導致在後續插入時使用負Id值。解決方案涉及使用其他方法檢測實體尚不存在,然後正確調用Add()來插入它,而不是使用Update()作為默認操作。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow