【问题标题】:Entity Framework - trying to insert into a table with a foreign key, EF attempts to insert into the original table with the primary key实体框架 - 尝试使用外键插入到表中,EF 尝试使用主键插入到原始表中
【发布时间】:2015-01-30 08:25:45
【问题描述】:

嗨,这是我的数据库图。

我正在尝试将行插入到 Order 和 OrderItem 表中。插入订单表很顺利。 但是,当我尝试插入 OrderItem 表时,出现异常。无法插入到 Product 表中,ProductId 已存在。为什么会这样?

Insert code:

db.Orders.Add(newOrder);

db.SaveChanges();

newOrder.OrderItems = products.Convert(newOrder);

foreach (var orderItem in newOrder.OrderItems)
{
     db.OrderItems.Add(orderItem);
}

db.SaveChanges();

新订单对象已经有一个订单项目列表,如果我要插入的 OrderItem 记录在产品表中没有现有的产品 ID,我只需要一个例外(对于 productId),而不是插入到 Product 表中。如何解决?

【问题讨论】:

  • 你能把你的插入代码放上去吗

标签: c# mysql sql-server entity-framework


【解决方案1】:

交叉检查订单项目列表是否具有 Product 实体对象,因为它是 OrderItem 表的外键。您也可以尝试在子表中显式插入,例如先插入 Order 然后 Order Items 采用 Order 实体对象,这应该可以工作(注意 OrderItem 应该有 Product 实体对象)。

【讨论】:

  • 谢谢,这就是问题所在。 OrderItem 引用了一个完整的 Product 对象,而不仅仅是它的 Id。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多