c# - Entity Framework - 尝试插入到带有外键的表中,EF 尝试插入到带有主键的原始表中

标签 c# mysql sql-server entity-framework

enter image description here

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

我正在尝试将行插入到 Order 和 OrderItem 表中。插入 Order 表没问题。 但是,当我尝试插入 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 记录在产品表中没有现有的 productId,我只需要一个异常(exception)(对于 productId),而不是插入到 Product 表中。这如何修复?

最佳答案

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

关于c# - Entity Framework - 尝试插入到带有外键的表中,EF 尝试插入到带有主键的原始表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27243517/

相关文章:

MySQL 日志查询不使用索引和 UNION 误报或错误?

asp.net - Visual Studio ASP.NET 调试导致 SQL Server 在空闲时 CPU 使用率过高

mysql - sql server try catch block 的mysql等价物是什么

c# - 有人知道好的 LinkedDictionary/Hashed LinkedList 吗?

c# - 由于 Intellisense 错误而无法发布

c# - 提高数据表性能

MySQL:通过另一个表的总和更新表记录

mysql-如何使用\(反斜杠)处理查询搜索?

sql-server - 使用带有子命名空间的 SQL Server 生成 xml

c# - 在 ASP.NET 中渲染服务器控件哪个更有效