context.Database.SqlCommand("SET IDENTITY_INSERT [Songs] ON;");
就在我執行Add方法(從DbSet的Add方法)之前。IDENTITY_INSERT ON不被實體框架尊重DBSet.Add方法
我的數據仍然使用身份值而不是我提供的ID。
我只希望暫時(用於數據遷移),然後在未來它應該保持自動生成的身份。
我對我的數據庫使用SQL CE 4。
context.Database.SqlCommand("SET IDENTITY_INSERT [Songs] ON;");
就在我執行Add方法(從DbSet的Add方法)之前。IDENTITY_INSERT ON不被實體框架尊重DBSet.Add方法
我的數據仍然使用身份值而不是我提供的ID。
我只希望暫時(用於數據遷移),然後在未來它應該保持自動生成的身份。
我對我的數據庫使用SQL CE 4。
EF無法猜測您已執行IDENTITY_SET命令並相應地更改其內部邏輯。
如果您需要插入特定的Id值,請使用SqlCommand進行插入。
+1我相信這將是正確的答案。 – 2011-02-15 13:19:20
這可能是一個問題。 DbContext
本身處理db連接。這僅適用於在打開身份插入時在同一連接上執行插入操作的情況。我認爲它在這個命令後釋放連接。您可以嘗試使用不同的DbContext的構造函數,並傳遞您自己打開的DbConnection
實例並自行處理它的關閉。
類似的問題http://stackoverflow.com/questions/13086006/how-can-i-force-entity-framework-to-insert-identity-columns – Jez 2012-10-26 13:12:20