簡體   English   中英

實體框架IDENTITY_INSERT ON不起作用

[英]Entity Framework IDENTITY_INSERT ON doesn't work

我有這個代碼,應該插入帶有標識插入的記錄

using (MCT_DB_ArchiveEntities ent = new MCT_DB_ArchiveEntities())
{
  ent.ExecuteStoreCommand("SET IDENTITY_INSERT [clicks] ON");
  ent.clicks.Attach(ck);
  ent.clicks.Context.ObjectStateManager.ChangeObjectState(ck, System.Data.EntityState.Added);
  ent.SaveChanges();
}

我收到這個錯誤。

當IDENTITY_INSERT設置為OFF時,無法在表'clicks'中為identity列插入顯式值。

它不應該工作。 僅當在與真實插入相同的連接上打開標識插入時,它才有效。 在您的情況下,可以使用兩個不同的連接。 要使其工作,您必須維護自己的數據庫連接並將其傳遞給ObjectContext的構造函數。

根據上一個問題,您需要開始上下文的交易。 保存更改后,您還必須重新標識“身份插入”列,最后必須提交事務。

using (MCT_DB_ArchiveEntities ent = new MCT_DB_ArchiveEntities())
using (var transaction = ent.Database.BeginTransaction())
{
    var item = new User {Id = 418, Name = "Abrahadabra" };
    ent.IdentityItems.Add(item);
    ent.Database.ExecuteSqlCommand("SET IDENTITY_INSERT Test.Items ON;");
    ent.SaveChanges();
    ent.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[User] OFF");
    transaction.Commit();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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