EF:插入記錄失敗,提示當 IDENTITY_INSERT 設定為 OFF 時,不能向表中的標識列插入顯式值
阿新 • • 發佈:2019-02-20
EF忽然報錯:
增加記錄時,提示當 IDENTITY_INSERT 設定為 OFF 時,不能向表 '。。。' 中的標識列插入顯式值。
真奇怪,新增記錄方法一向好地地,從沒出過錯。要出錯,那也是Update時才會,什麼“附著不附著”的問題。
從提示資訊來看,是向標識列插入了值。那麼EF為什麼會認不出標識列呢?
原來,是因為同事首先生成了EF程式碼,然後再在資料庫中將某欄位改成了標識列,改完以後,沒有重新整理EF程式碼,因此EF沒有認出該
欄位為標識列。
在.edmx檔案裡,檢視其程式碼,對實體類有如下描述:
增加記錄時,提示當 IDENTITY_INSERT 設定為 OFF 時,不能向表 '。。。' 中的標識列插入顯式值。
真奇怪,新增記錄方法一向好地地,從沒出過錯。要出錯,那也是Update時才會,什麼“附著不附著”的問題。
從提示資訊來看,是向標識列插入了值。那麼EF為什麼會認不出標識列呢?
原來,是因為同事首先生成了EF程式碼,然後再在資料庫中將某欄位改成了標識列,改完以後,沒有重新整理EF程式碼,因此EF沒有認出該
欄位為標識列。
在.edmx檔案裡,檢視其程式碼,對實體類有如下描述:
<EntityType Name="Status_Info"> <Key> <PropertyRef Name="ID" /> </Key> <Property Name="ID" Type="int" StoreGeneratedPattern="Identity" Nullable="false" /> <Property Name="StatusID" Type="int" /> <Property Name="Color" Type="nchar" MaxLength="10" /> </EntityType>
是否標識列,一目瞭然。
教訓:資料庫更改,一定要重新整理EF程式碼。