1. 程式人生 > 其它 >C# Cannot insert explicit value for identity column in table 'ServiceOrderReceipt' when IDENTITY_INSERT is set to OFF.

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

報錯資訊:

 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物件就報錯了