C#实体框架主键违规

时间:2016-05-24 23:37:04

标签: c# entity-framework

我从外部API获取数据,并希望使用Entity Framework将其保存在SQL Server中。我得到的数据是订单信息。数据大致如下:

订单:

  • 订单ID

  • 客户

  • 送货地址

  • 产品

客户:

  • 客户ID
  • 客户详情

问题是任何客户都可以下多个订单。我的实体框架基于订单信息。因此,如果客户放置了多个订单,我会收到主要密钥违规,因为即使订单不是,客户也已经在数据库中。

供参考:我通常会添加如下订单:orderContext.Orders.Add(order);

由于每个订单都包含客户数据,因此我无法在不“添加”客户的情况下添加订单。即使我要检查现有客户,我仍然必须将记录添加到Orders表,这仍然会触发问题。有没有办法告诉EF添加或更新每个“子”类?

此处的示例比实际数据更简单。还有其他几个依赖项,这样即使我转而使用Customer类作为EF的基础,它仍然会有这个问题。

1 个答案:

答案 0 :(得分:0)

像这样更改你的表:

将CustomerID添加到您的Order表格中,这是因为每个Order只有一个 Customer而每个Customer都有多个或零 Order

订单(订单ID,客户ID,ShippingAddress)

客户(客户ID,...)