例如,我有下表:

客户信息

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或任何其他解决方案?谢谢!

最佳答案

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

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


自动产生的值:真
自动同步:OnInsert


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

08-06 06:47