【发布时间】:2016-09-13 01:14:49
【问题描述】:
我有一个包含 5 列的数据库表 products。 Id 是主键。在 SQL Server Management Studio 中,您可以在这里清楚地看到这一点:
我有一个 product 和 Id = 69 和 Name = "草坪飞镖"。我正在尝试使用Id = 420 和Name = "Lawn Darts" 插入新产品。我正在尝试使用 identity insert 以便为插入的产品指定 ID。所以名称相同,但ID不同。这应该没问题吧?
我正在使用 LINQ --> SQL 插入 C# 控制台应用程序。当我尝试插入具有相同Name 但不同Id 的内容时,我收到以下错误消息:
无法在具有唯一性的对象“dbo.Products”中插入重复的键行 索引“IX_Name”。重复键值为 (Lawn Darts)。
为什么,如果它是非键?
【问题讨论】:
-
您的 Name 列上肯定有一个唯一索引 (IX_Name)。那是什么错误。在 SSMS 中为您的表打开 Keys 文件夹并查看那里。第二个错误告诉您不能在标识列中插入自己的值。为此,您需要启用此功能:
SET IDENTITY_INSERT TableName ON,当然完成后将其设置为OFF。 -
@rook 是的,你是对的。我只是在查看错误的设置。我必须右键单击该列并单击
Indexes/Keys...,而不仅仅是查看常规列属性。在定义product的C# 代码中,它显然也有IsUnique注释。应该看他们的第一个......
标签: c# sql-server linq-to-sql identity-insert