• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

SQL Server为非关键属性提供“重复键”错误?

c/c++ 来源:AlbatrossCafe 3次浏览

我有一个数据库表products 5列。 Id是主键。在SQL Server Management Studio中,你可以清楚地看到这这里:SQL Server为非关键属性提供“重复键”错误?

screenshot 1

我有一个productId = 69和Name = “草坪飞镖”。我试图插入一个新产品Id = 420和Name =“草坪飞镖”。我正在尝试使用标识插入,以便我可以指定插入产品的标识。所以名称是相同的,但Id是不同的。这应该没问题吧?

我正在使用LINQ-> SQL插入到C#控制台应用程序中。当我尝试用相同的Name但不同Id插入一些东西,我收到以下错误信息:

不能在对象插入重复键行“dbo.Products具有唯一 指数“IX_Name”。重复的键值是(草坪飞镖)。

为什么,如果它是非关键?


===========解决方案如下:

好吧,这比我做得更简单。感谢@rook指针。

尽管Name列不是主键,但它被指定为“唯一索引”。我在SQL Server Management Studio中查找错误的设置,所以我错过了它。我正在寻找“属性”。我需要做的是右键单击“名称”列并选择“索引/键…”选项。这会弹出一个窗口,我可以将属性Is Unique设置为“否”。

screenshot

或者,由于我使用代码优先迁移,我可以从当在C#中定义的属性中删除数据的注释,并继续通过该路由更新DB。

前:

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

后:

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

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)