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

C# 实体框架-尝试使用外键插入到表中,EF尝试使用主键插入到原始表中,c#,mysql,sql-server,entity-framework,C#,Mysql,Sql Server,Entity Framework,嗨,这是我的数据库图 我正在尝试向Order和OrderItem表中插入行。插入到订单表中就可以了。 然而,当我试图插入OrderItem表时,我得到一个异常。无法插入到产品表中,ProductId已存在。为什么会发生这种情况 Insert code: db.Orders.Add(newOrder); db.SaveChanges(); newOrder.OrderItems = products.Convert(newOrder); foreach (var orderItem in

嗨,这是我的数据库图

我正在尝试向Order和OrderItem表中插入行。插入到订单表中就可以了。 然而,当我试图插入OrderItem表时,我得到一个异常。无法插入到产品表中,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,而不是插入到产品表中,我只需要一个例外(对于productId)。如何修复此问题?

交叉检查订单项列表是否包含Product entity对象,因为它是OrderItem表的外键。此外,您还可以尝试在子表中显式插入,例如先插入到订单中,然后使用订单实体对象订购项目。这应该可以正常工作(注意,OrderItem应该具有产品实体对象)。

您可以输入插入代码吗谢谢,这就是问题所在。OrderItem引用了完整的产品对象,而不仅仅是它的Id。