实体框架IDENTITY_INSERT ON不工作
本文关键字:ON 工作 INSERT 框架 IDENTITY 实体 | 更新日期: 2023-09-27 18:10:54
我有这个代码,应该插入记录与身份插入
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'中插入标识列的显式值。
它不应该工作。只有当身份插入在与实际插入相同的连接上打开时,它才有效。在您的情况下,可以使用两个不同的连接。要使其工作,您必须维护自己的DB连接并将其传递给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();
}