IDENTITY_INSERT 在 SQL Server Compact 与 Entity Framework 6.4 中不工作

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 Server Compact Edition (SQL Server CE)。

身份插入是会话(连接打开)范围的。您是否使用 已经打开的 连接创建了 db-context?或者你给它一个连接字符串,或者一个关闭的连接?如果是每次操作都打开连接:没有session的连续性,所以每一个if三个操作在语义上是不相关的,不共享一个session。

根据默认构造函数,我认为它使用的是 "lookup default connection string, use deferred connection" 方法。尝试使用接受连接的构造函数,确保它首先打开

具体来说:

using var conn = // ... create connection
conn.Open();
Db = new Entitites(conn);
// ... the rest of your code