为什么 entity framework 没有在我的订单中映射客户实体?

Why does the entity framework not map the customer entity in my order?

我有一个订单实体,里面有几个实体CustomerStore等,但是Entity Framework没有填充这些实体。我认为这些关系是错误的,但我找不到为什么 entity framework 没有映射订单中的实体。

OrdersCustomers 个实体:

public partial class Orders
{
    public Orders()
    {
        OrderItems = new HashSet<OrderItems>();
    }

    public int OrderId { get; set; }
    public int? CustomerId { get; set; }
    public byte OrderStatus { get; set; }
    public DateTime OrderDate { get; set; }
    public DateTime RequiredDate { get; set; }
    public DateTime? ShippedDate { get; set; }
    public int StoreId { get; set; }
    public int StaffId { get; set; }

    public virtual Customers Customer { get; set; }
    public virtual Staffs Staff { get; set; }
    public virtual Stores Store { get; set; }
    public virtual ICollection<OrderItems> OrderItems { get; set; }
}

public partial class Customers
{
    public Customers()
    {
        Orders = new HashSet<Orders>();
    }

    public int CustomerId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Phone { get; set; }
    public string Email { get; set; }
    public string Street { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string ZipCode { get; set; }

    public virtual ICollection<Orders> Orders { get; set; }
}

Entity Framework代码片段:

        modelBuilder.Entity<Orders>(entity =>
        {
            entity.HasKey(e => e.OrderId)
                .HasName("PK__orders__46596229F9C56686");

            entity.ToTable("orders", "sales");

            entity.Property(e => e.OrderId).HasColumnName("order_id");

            entity.Property(e => e.CustomerId).HasColumnName("customer_id");

            entity.Property(e => e.OrderDate)
                .HasColumnName("order_date")
                .HasColumnType("date");

            entity.Property(e => e.OrderStatus).HasColumnName("order_status");

            entity.Property(e => e.RequiredDate)
                .HasColumnName("required_date")
                .HasColumnType("date");

            entity.Property(e => e.ShippedDate)
                .HasColumnName("shipped_date")
                .HasColumnType("date");

            entity.Property(e => e.StaffId).HasColumnName("staff_id");

            entity.Property(e => e.StoreId).HasColumnName("store_id");

            entity.HasOne(d => d.Customer)
                .WithMany(p => p.Orders)
                .HasForeignKey(d => d.CustomerId)
                .OnDelete(DeleteBehavior.Cascade)
                .HasConstraintName("FK__orders__customer__0F4872E8");

            entity.HasOne(d => d.Staff)
                .WithMany(p => p.Orders)
                .HasForeignKey(d => d.StaffId)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK__orders__staff_id__1130BB5A");

            entity.HasOne(d => d.Store)
                .WithMany(p => p.Orders)
                .HasForeignKey(d => d.StoreId)
                .HasConstraintName("FK__orders__store_id__103C9721");
        });

控制器代码:

Postman 中的响应:

其中一个选项是 eager load 通过 Include:

return await _context.Orders
    .Include(o => o.Customer)
    .Include(o => o.Staff)
    .Include(o => o.Store)
    .ToListAsync()

有关更多信息和选项,请查看 "Loading Related Data" doc