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

标签 c# .net linq-to-sql exception

例如,我有下表:

客户信息

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();

返回如下错误,

Can't perform Create, Update, or Delete operations on 'Table(CustomerInfo)' because it has no primary key.

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

最佳答案

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

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

  • 自动生成的值:真<​​/li>
  • 自动同步:插入时

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

关于c# - 如何插入具有自动递增编号的新记录作为主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17962815/

相关文章:

.net - 如何使用 linq to sql 外部映射延迟加载属性?

c# - linq group by with join

silverlight - LinqToSql如何实现计算列

c# - 哪个代码更好 : using "as" or "is"?

c# - 将项目移动到另一个硬盘驱动器后的dll问题

c# - 如果您在通知图标上按住 Lt-Click 或 Rt-Click,如何获得不同的上下文菜单?

c# - Windows Phone 8.1 Silverlight应用程序中的音频记录问题

c# - 在队列中播放 .wav 文件

c# - 保存区域性日期 Linq to SQL

java - 为什么 Java 允许接口(interface)具有静态只读字段而 .NET 接口(interface)不能?