SQL 服务器针对非密钥 属性 给出 "duplicate key" 错误?

SQL Server gives "duplicate key" error for a non-key property?

我有一个包含 5 列的数据库 table productsId 是主键。在 SQL Server Management Studio 中,您可以在此处清楚地看到:

我有一个 product Id = 69 和 Name = "Lawn Darts" 。我正在尝试插入 Id = 420 和 Name = "Lawn Darts" 的新产品。我正在尝试使用 identity insert 以便我可以为插入的产品指定 Id。所以名称相同,但 Id 不同。这个应该没问题吧?

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

Cannot insert duplicate key row in object 'dbo.Products' with unique index 'IX_Name'. The duplicate key value is (Lawn Darts).

为什么,如果它不是密钥?

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

尽管 Name 列不是主键,但它被指定为 "unique index"。我在 SQL Server Management Studio 中查看错误的设置,所以我错过了。我正在查看 "properties"。我需要做的是右键单击 "name" 列和 select "Indexes/Keys..." 选项。这会出现一个 window,我可以在其中将属性 Is Unique 更改为 "No"。

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

之前:

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

之后:

[MaxLength(255)]
public string Name { get; set; }