1

我有一个products5 列的数据库表。Id是主键。在 SQL Server Management Studio 中,您可以在这里清楚地看到:

截图 1

我有一个productwith Id= 69 and Name= "Lawn Darts" 。我正在尝试使用Id= 420 和Name=“草坪飞镖”插入新产品。我正在尝试使用身份插入,以便我可以为插入的产品指定 ID。所以名称相同,但ID不同。这应该没问题吧?

我正在使用 LINQ --> SQL 插入 C# 控制台应用程序。当我尝试插入具有相同Name但不同Id的内容时,我收到以下错误消息:

无法在具有唯一索引“IX_Name”的对象“dbo.Products”中插入重复的键行。重复键值为 (Lawn Darts)。

为什么,如果它是非键?

4

1 回答 1

3

嗯,这比我做的要简单得多。感谢@rook 的指点。

即使该Name列不是主键,它也被指定为“唯一索引”。我在 SQL Server Management Studio 中查看了错误的设置,所以我错过了它。我正在查看“属性”。我需要做的是右键单击“名称”列并选择“索引/键...”选项。这会打开一个窗口,我可以在其中将属性Is Unique设置为“否”。

截屏

或者,由于我使用的是代码优先迁移,我可以从 C# 中定义的属性中删除数据注释,然后通过此路由继续更新数据库。

前:

[Index(IsUnique = true)]
[MaxLength(255)]
public string Name { get; set; }

后:

[MaxLength(255)]
public string Name { get; set; }
于 2016-09-13T01:59:05.020 回答