2011-02-15 33 views
3
context.Database.SqlCommand("SET IDENTITY_INSERT [Songs] ON;"); 

就在我執行Add方法(從DbSet的Add方法)之前。IDENTITY_INSERT ON不被實體框架尊重DBSet.Add方法

我的數據仍然使用身份值而不是我提供的ID。

我只希望暫時(用於數據遷移),然後在未來它應該保持自動生成的身份。

我對我的數據庫使用SQL CE 4。

+0

類似的問題http://stackoverflow.com/questions/13086006/how-can-i-force-entity-framework-to-insert-identity-columns – Jez 2012-10-26 13:12:20

回答

3

EF無法猜測您已執行IDENTITY_SET命令並相應地更改其內部邏輯。

如果您需要插入特定的Id值,請使用SqlCommand進行插入。

+0

+1我相信這將是正確的答案。 – 2011-02-15 13:19:20

4

這可能是一個問題。 DbContext本身處理db連接。這僅適用於在打開身份插入時在同一連接上執行插入操作的情況。我認爲它在這個命令後釋放連接。您可以嘗試使用不同的DbContext的構造函數,並傳遞您自己打開的DbConnection實例並自行處理它的關閉。