实体框架 - 尝试使用外键插入到表中,EF尝试使用主键插入到原始表中

时间:2014-12-02 06:53:27

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

enter image description here

嗨,这是我的数据库图表。

我正在尝试在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();

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

1 个答案:

答案 0 :(得分:1)

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