例如,我有以下表格:
CustomerInfo
cus_id: auto increment, int, is Identity
cus_name: nvarchar
如果我使用以下代码插入记录“Peter”,
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
或任何其他解决方案?谢谢!
答案 0 :(得分:10)
首先,LINQ-To-SQL需要主键才能进行插入和更新,因此您可能需要在表中添加主键。
现在,因为它是一个自动递增的标识列,所以在dbml中,您必须选择“CustomerInfo”表的“cus_id”列,然后转到属性并设置以下内容:
这将确保当您插入新行时,它将获得一个新ID。
答案 1 :(得分:1)
从question的答案1中删除你必须将cus_id作为主键。 您也可以尝试执行以下操作
CREATE TABLE Customers
(
cus_id int NOT NULL AUTO_INCREMENT,
cus_name varchar(255) NOT NULL,
PRIMARY KEY (cus_id)
)
答案 2 :(得分:0)
我收到了这个错误。至于我修复它是为了添加一个主键。 这段代码使我成为主键并使其自动增量。也许这就是你要找的东西? (当您创建表格时)
columnname bigint IDENTITY(1,1) NOT NULL,
CONSTRAINT pkcolumnname PRIMARY KEY CLUSTERED