EF-Core 相关数据加载适用于一个 child 但不适用于另一个

EF-Core Related data loading works for one child but not the other

在我的 ASP.NET Core 1.1EF-Core 1.1 app 中,我在具有 partial viewparent view 中显示数据。场景类似于以下内容:one-to-one Customers and Orders tableCustomers and Address table 之间的关系。用户从 Parent 视图的下拉列表中选择一个客户,该视图有一个显示所选客户的相应订单的部分视图。以下控制器正确地将客户订单详细信息发送到视图。但是,如果我用地址实体替换订单实体,则传递给部分视图的模型始终为空。

问题:我在这里可能遗漏了什么?

注意:通过放置断点,我验证了下面的控制器正确地将所选客户的记录发送到 Parent 视图,并且我还在 Db 中查看该客户在地址 table 中有相应的地址记录。另一个观察结果是,即使我通过 Visual Studio 控制台删除 customerorderaddress 实体之间的 FK-relationship,然后重新创建这些关系,问题仍然存在- 即,它适用于 order 但不适用于 address 实体。我还在 Db 中验证了 FK-relationship 已为 table 正确创建。

Parent:

public class Customer
{
    [Key]
    public int CustomerId{ get; set; }
    public string Name { get; set; }
    ....
    ....
    public Order order { get; set; }
    public Address address { get; set; }
}

一个Child:

public class Order
{
    [Key]
    public int OrderId{ get; set; }
    public float Price { get; set; }
    ....
    ....
    public int? CustomerId { get; set; }
    public Customer customer{ get; set; }
}

另一个Child:

public class Adress
{
    [Key]
    public int AdressId{ get; set; }
    public string street { get; set; }
    ....
    ....
    public int? CustomerId { get; set; }
    public Customer customer{ get; set; }
}

控制器:

....
....
Customer mycustomer = _context.Customer.Include(c => c.order).Where(c=> c.CustomerId== selectedId).SingleOrDefault();
....
....
return View(mycustomer);

Parent 查看:

@model MyProj.Models.Customer

....
@Html.Partial("Partial_orders", Model.order)
....

局部视图:

@model MyProj.Models.Order

....
<div>@Model.CustomerId<div>
....

我认为问题是在您的控制器中,您在获取 Customer 时忘记包含地址。

所以从

Customer mycustomer = _context.Customer
    .Include(c => c.order)
    .Where(c => c.CustomerId == selectedId)
    .SingleOrDefault();

Customer mycustomer = _context.Customer
    .Include(c => c.order)
    .Include(c => c.address)
    .Where(c => c.CustomerId == selectedId)
    .SingleOrDefault();

那是我的错。在地址的情况下,有人后来禁用了 FK 关系,地址 table 被孤立了。感谢那些可能试图提供帮助的人。