SQL 服务器针对非密钥 属性 给出 "duplicate key" 错误?
SQL Server gives "duplicate key" error for a non-key property?
我有一个包含 5 列的数据库 table products
。 Id
是主键。在 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; }
我有一个包含 5 列的数据库 table products
。 Id
是主键。在 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; }