1

我有一個由EF6 Code First創建的數據庫。某些表具有標識列。我需要使用OLD Id值向這些表中插入一些記錄。 我嘗試了此鏈接How to switch between DatabaseGeneratedOption.Identity...中的解決方案,該解決方案演示瞭如何在計算選項與非選項之間切換,但不在標識列上進行切換。 當我試圖做到這一點時,我得到了這樣的錯誤信息:「IDENTITY_INSERT設置爲OFF時,無法在表'鏈接'中插入標識列的顯式值。」 有什麼辦法可以解決這個問題嗎?如何在運行時打開/關閉DatabaseGeneratedOption.Identity

回答

2

您面臨的問題是,EF將明確的ID值發送給DBMS,但它在IDENTITY_INSERT設置爲off時沒有預期值。

您必須另外執行下列操作: context.Database.ExecuteSqlCommand(「SET IDENTITY_INSERT Links ON」);

這告訴您的DBMS也接受顯式值。 爲此,您必須將此命令和(至少)SaveChanges()包裝到一個事務中。

+1

很好。有用! –