c# - 为什么这个带 IDENTITY_INSERT 的 EF 插入不起作用?

标签 c# entity-framework entity-framework-6 identity-insert

这是查询:

using (var db = new AppDbContext())
{
    var item = new IdentityItem {Id = 418, Name = "Abrahadabra" };
    db.IdentityItems.Add(item);
    db.Database.ExecuteSqlCommand("SET IDENTITY_INSERT Test.Items ON;");
    db.SaveChanges();
}

执行时,新表中插入记录的Id仍为1。

新:当我使用事务或 TGlatzer 的答案时,我得到异常:

Explicit value must be specified for identity column in table 'Items' either when IDENTITY_INSERT is set to ON or when a replication user is inserting into a NOT FOR REPLICATION identity column.

最佳答案

根据之前的Question您需要开始您的上下文事务。保存更改后,您还必须重新声明 Identity Insert 列,最后您必须提交事务。

using (var db = new AppDbContext())
using (var transaction = db .Database.BeginTransaction())
{
    var item = new IdentityItem {Id = 418, Name = "Abrahadabra" };
    db.IdentityItems.Add(item);
    db.Database.ExecuteSqlCommand("SET IDENTITY_INSERT Test.Items ON;");
    db.SaveChanges();
    db.Database.ExecuteSqlCommand("SET IDENTITY_INSERT Test.Items OFF");
    transaction.Commit();
}

关于c# - 为什么这个带 IDENTITY_INSERT 的 EF 插入不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41995493/

相关文章:

c# - 我无法在另一台电脑上运行我的应用程序

.net - EF 6.0.0 - 不从头开始创建数据库

jquery - 分页在带有 MVC 的 JqGrid 中不起作用

c# - 在 WPF 中填充 ListView 项目

c# - 如何检测一个对象是一个泛型集合,以及它包含哪些类型?

c# - 解耦 ASP.NET MVC 5 Identity 以允许实现分层应用程序

c# - SQL C# 尝试访问前 10 个值

c# - 如何在设计时不知道要选择的属性的名称的情况下编写 linq select 语句?

c# - linq连接错误

c# - 从集合中删除对象时,如何让 EF6 从数据库中删除对象?