首页 > 解决方案 > 使用 Linq-to-SQL 插入,其中 IDENTITY_INSERT 设置为 OFF

问题描述

我正在尝试在不插入标识的情况下将新行插入表中。我只是插入到其他列。我希望自动创建身份。

简化代码:

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

我收到以下错误:

当 IDENTITY_INSERT 设置为 OFF 时,无法在表“Log”中插入标识列的显式值。

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

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

标签: sqlsql-serverlinq-to-sql

解决方案


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

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

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


推荐阅读