当我执行下面的脚本时,我有以下错误。错误是关于什么,如何解决?

Insert table(OperationID,OpDescription,FilterID)
values (20,'Hierachy Update',1)

错误:

服务器:Msg 544,级别16,状态1,线路1 当IDENTITY_INSERT设置为OFF时,无法为表'table'中的标识列插入显式值。


当前回答

如果你在使用带有sequize -typescript npm的sql-server时遇到这个问题,请确保将@AutoIncrement添加到ID列:

  @PrimaryKey
  @AutoIncrement
  @Column
  id!: number;

其他回答

在我的情况下,我插入了比表中定义的更多的字符。

在我的表列用nvarchar(3)定义,我传递了超过3个字符,同样的错误消息来了。

这不是答案,但在某些情况下可能是类似的问题

在我的例子中,我已经在modelBuilder的上下文中设置了另一个属性作为键。

modelBuilder.Entity<MyTable>().HasKey(t => t.OtherProp);

我必须设置正确的id

 modelBuilder.Entity<MyTable>().HasKey(t => t.Id);

首先转到所需的表名

步骤2 ->右击表名

选择设计

单击列名

步骤5)进入列属性,然后将No设置为Identity Specification

[注意:插入到显式值后,如果你想,你可以恢复到标识规范为true,然后它会再次生成值]

如果你使用SQL server管理studio你可以使用下面的方法

步骤1) 步骤2)

在您的查询中有前面提到的OperationId,它不应该在那里,因为它是自动递增的

Insert table(OperationID,OpDescription,FilterID)
values (20,'Hierachy Update',1)

所以你的问题是

Insert table(OpDescription,FilterID)
values ('Hierachy Update',1)

每个人都评论SQL,但是在EntityFramework中发生了什么?我看了整篇文章,没人能解出EF。所以几天后,我找到了一个解决方案: 在EF Core的上下文中创建模型有这样一条指令:modelBuilder。实体<客户端>(实体=>{实体。属性(e => e.d id).ValueGeneratedNever();

这也会产生错误,解决方案:你必须通过ValueGeneratedOnAdd()改变它的工作!