Entity Framework Core:INSERT 语句与 FOREIGN KEY 约束冲突

问题描述 投票:0回答:1

我正在使用 Entity Framework Core 开发 ASP.NET Core 应用程序,并且在尝试将数据插入数据库时遇到错误。我收到的错误消息是:

“SqlException:INSERT 语句与 FOREIGN KEY 约束“FK_Items_Orders_OrderID”冲突。冲突发生在数据库“OrderEase”、表“dbo.Orders”、列“OrderID”中。”

“商品”表和“订单”表之间存在一对多关系,其中每个商品都与一个订单相关联。我检查了以下内容:

  • 我创建商品的下拉列表中的OrderID值对应 到订单表中的有效订单。
  • 我的 DbContext 类已正确配置以建立 项目和订单之间的关系。
  • 我的 DbContext 中启用了级联删除,以确保关联的 删除订单时,商品也会被删除。

尽管进行了这些检查,我仍然遇到此错误。可能是什么原因导致此问题?我该如何解决?

这是我的 DbContext 配置的片段:

// DbContext configuration in OnModelCreating method


modelBuilder.Entity<Order>()
    .HasMany(o => o.Items)
    .WithOne(i => i.Order)
    .HasForeignKey(i => i.OrderID)
    .OnDelete(DeleteBehavior.Cascade);

任何有关故障排除和解决此问题的见解或建议将不胜感激。

Screenshot: SQL Exception

c# entity-framework
1个回答
0
投票

如果您的项目类中同时具有 OrderId 和 Order(从您的问题看来是这样)属性,那么在插入项目时可能会混淆使用哪一个 EF。

我认为最佳实践是始终设置 Order 属性而不是 OrderId。

© www.soinside.com 2019 - 2024. All rights reserved.