关注小程序 找一找教程网-随时随地学编程

Net Core教程

C# Cannot insert explicit value for identity column in table 'ServiceOrderReceipt' when ID

报错信息:

 Cannot insert explicit value for identity column in table 'Order' when IDENTITY_INSERT is set to OFF.

分析:

报错解析:不能往Order表的自增字段插入值
通常情况下,不能向 SQL Server 自增字段插入值,如果非要这么干的话,SQL Server 就会好不客气地给你个错误警告:

Server: Msg 544, Level 16, State 1, Line 1  
Cannot insert explicit value for identity column in table 't' when identity_insert is set to OFF. 

这个错误消息提示我们,如果向 SQL Server 自增字段插入值,需要设置 identity_insert 选项为 on。
注意的是,自增字段插入值后,要及时把 identity_insert 设置为 off。
或者写插入语句时不要把自增的ID加入进去。

LINQ错误案例

此Order表以Id为自增索引

  var order=new Order()
     {
        Id=1,
        Title="百香果"
     }  

以上错误:不能给自增的Id字段赋值

  var order=new Order()
     {
        Title="百香果"
     } 
  ctx.Order.Add(order)
 //后面一堆逻辑代码后,又加了一个添加代码
  ctx.Order.Add(order)

以上也是报错,因为添加一次后,Id已经存在了,又添加同一个order对象就报错了