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

时间:2017-05-28 16:41:53

标签: c# asp.net-core entity-framework-core foreign-key-relationship

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

问题:我在这里可能缺少什么?

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

父:

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

一个孩子:

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

另一个孩子:

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);

家长视图

@model MyProj.Models.Customer

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

部分视图

@model MyProj.Models.Order

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

2 个答案:

答案 0 :(得分:0)

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

改变
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();

答案 1 :(得分:0)

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