[英]Not working IDENTITY_INSERT in SQL Server Compact with Entity Framework 6.4
我想將具有特定ID
的記錄添加到數據庫中,但是當我編寫並運行此代碼時,創建的行從第一行開始。 我的ID
是身份,我使用以下代碼禁用身份插入:
Db = new Entitites();
Db.Database.ExecuteSqlCommand(@"SET IDENTITY_INSERT CarName ON");
Db.CarName.Add(new MrSanadBaseDb.CarName()
{
PK_Car = 120,
Name = "",
IsDeleted = false
});
Db.SaveChanges();
Db.Database.ExecuteSqlCommand(@"SET IDENTITY_INSERT CarName OFF;");
Db.Database.ExecuteSqlCommand(@"ALTER TABLE CarName ALTER COLUMN PK_Car IDENTITY (121,1);");
但是記錄不是用ID = 120
保存的,記錄是用ID = 1
保存的。
我使用 SQL 服務器精簡版 (SQL Server CE)。
身份插入是 session(連接打開)范圍。 您是否使用已打開的連接創建了 db-context? 或者你給它一個連接字符串,還是一個關閉的連接? 如果是每個操作打開連接:沒有session連續性,所以如果這三個操作在語義上互不相關,並且不共享一個session。
基於該默認構造函數,我認為它正在使用“查找默認連接字符串,使用延遲連接”方法。 嘗試使用接受連接的構造函數,並確保它首先打開。
具體來說:
using var conn = // ... create connection
conn.Open();
Db = new Entitites(conn);
// ... the rest of your code
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.