簡體   English   中英

在帶有實體框架 6.4 的 SQL 服務器緊湊型中無法使用 IDENTITY_INSERT

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM