如何插入具有自动增量编号作为主键的新记录?

例如,我有以下表格:

顾客信息

cus_id: auto increment, int, is Identity cus_name: nvarchar 

如果我使用以下代码插入记录“彼得”,

 string name = "Peter"; DataContext DC = new DataContext(); CustomerInfo newCustomer = new CustomerInfo(); newCustomer.cus_name = name; DC.CustomerInfos.InsertOnSubmit(newCustomer); DC.SubmitChanges(); 

以下错误返回,

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

我是否需要自定义cus_id或任何其他解决方案? 谢谢!

首先,LINQ-To-SQL需要主键才能进行插入和更新,因此您可能需要在表中添加主键。

现在,因为它是一个自动递增的标识列,所以在dbml中,您必须选择“CustomerInfo”表的“cus_id”列,然后转到属性并设置以下内容:

  • 自动生成的值 :正确
  • 自动同步 :OnInsert

这将确保当您插入新行时,它将获得一个新ID。

从问题的答案1中确定你必须将cus_id作为主键。 你也可以尝试做以下

 CREATE TABLE Customers ( cus_id int NOT NULL AUTO_INCREMENT, cus_name varchar(255) NOT NULL, PRIMARY KEY (cus_id) ) 

我收到了这个错误。 至于我修复它是为了添加一个主键。 这段代码使我成为主键并使其自动增量。 也许这就是你要找的东西? (当你创建表格时)

 columnname bigint IDENTITY(1,1) NOT NULL, CONSTRAINT pkcolumnname PRIMARY KEY CLUSTERED