【发布时间】:2015-03-27 08:13:28
【问题描述】:
这是我的模型:
[Key, Column(Order=1)] // composite key with ExternalId. WebshopId+ExternalId must be unique
[ForeignKey("Webshop_Id")]
public virtual Webshop WebshopEntity
{
get { return _Webshop; }
set { _Webshop = value; }
}
[NotMapped]
private Webshop _Webshop;
public int Webshop_Id { get; set; }
[Key, Column(Order = 2)]
[MinLength(1, ErrorMessage = "ExternalId must be atleast 1 character")]
public virtual string ExternalId { get; set; }
Product 应具有 Webshop(它的父级)和 ExternalId 的复合主键。
现在我的数据库已填满,我将添加一个新的Product,其父级具有相同的ExternalId 但不同的Webshop。这会导致以下错误:
违反主键约束“PK_dbo.Products”。无法在对象“dbo.Products”中插入重复键。重复键值为 (110)。
我做错了什么? (使用 EF6)
【问题讨论】:
-
你能发布你的 dbo.Products 表的 DDL SQL 吗?
-
尝试在 Webshop_Id 而不是 WebshopEntity 上定义 [Key]。
-
这就是问题所在,Webshop_id 上的 [Key] 成功了。表定义现在显示 CONSTRAINT [PK_dbo.Products] PRIMARY KEY CLUSTERED ([Webshop_Id] ASC, [ExternalId] ASC),而在此更改之前,它缺少 Webshop_Id ASC 部分。谢谢! (如果需要,请将其作为答案提交)
标签: c# asp.net-mvc entity-framework entity-framework-6