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

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

错误:

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


当前回答

在我的例子中,问题是,当我试图更新记录时,我自己从代码中指定了自增ID。 在从新记录创建中删除ID属性之后,一切都正常了。

其他回答

在该表的实体中,将DatabaseGenerated属性添加到标识插入设置的列之上:

例子:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TaskId { get; set; }

把断点放在你的[HttpPost]方法上,检查什么值被传递给Id属性。如果它不为零,则会发生此错误。

如果您使用Interface并以通用方式实现savechanges方法,则会出现使用非类型化DBContext或DBSet的问题

如果这是您的情况,我建议使用强类型的dbcontext

MyDBContext.MyEntity.Add(mynewObject)

那么,保存更改就可以了

设置该字段的身份增量时,不能在“OperationID”列中插入数据。

不要在该字段中输入值,它将自动设置。

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

我通过每次向数据库添加任何东西时创建一个新对象来解决这个问题。