使用Linq-to-SQL将IDENTITY_INSERT设置为OFF进行插入

时间:2018-11-29 19:18:48

标签: sql sql-server linq-to-sql

我试图在表中插入新行,而不插入身份。我只想插入其他列。我希望自动创建身份。

简化代码:

Table<Class1> customers = db.GetTable<Class1>();
customers.InsertOnSubmit(new Class1 { Prop1 = "test });
try { db.SubmitChanges(); }
catch (ChangeConflictException ex) { }

我收到以下错误:

  

在以下情况下无法为表'Log'中的标识列插入显式值   IDENTITY_INSERT设置为OFF。

我假设Linq2SQL自动更新所有列。但是我该如何解决呢?我什至试图从类中忽略该列,但随后Linq2SQL告诉我:

  

无法对“表(Class1)”执行创建,更新或删除操作   因为它没有主键。

1 个答案:

答案 0 :(得分:2)

您的属性应具有以下属性:

[Column(Storage="ColumnID", AutoSync=AutoSync.Always, DbType="Int NOT NULL 
     IDENTITY", IsDbGenerated=true)]
public int ColumnID 

如果您的列表在数据库中具有自动标识,请尝试重新创建或更新LINQ TO SQL数据库上下文。