簡體   English   中英

EF核心相關數據加載僅對一個孩子有效,而對另一個孩子無效

[英]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中顯示數據。 方案類似於以下內容: Customers and Orders table之間以及Customers and Address table之間的一對一關系。 用戶從父視圖的下拉菜單中選擇一個客戶,該視圖具有部分視圖,該視圖顯示所選客戶的相應訂單。 跟隨控制器正確地將客戶訂單詳細信息發送到視圖。 但是,如果我將訂單實體替換為地址實體,則傳遞給Partial視圖的模型始終為null。

問題 :我在這里可能會缺少什么?

注意 :通過放置斷點,我已驗證下面的控制器正確地將所選客戶的記錄發送到父視圖,並且還檢查了Db該客戶在地址表中是否具有相應的地址記錄。 另一個觀察結果是,即使我通過Visual Studio控制台刪除了customerorderaddress實體之間的FK-relationship ,然后重新創建了這些關系,問題仍然相同-即,它對於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>
....

我認為問題在於,在您的控制器中,您忘記了獲得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關系,並且地址表被孤立了。 感謝那些可能嘗試提供幫助的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM