[英]EF-Core Related data loading works for one child but not the other
在我的ASP.NET Core 1.1
, EF-Core 1.1 app
,我正在具有partial view
的parent view
中顯示數據。 方案類似於以下內容: Customers and Orders table
之間以及Customers and Address table
之間的一對一關系。 用戶從父視圖的下拉菜單中選擇一個客戶,該視圖具有部分視圖,該視圖顯示所選客戶的相應訂單。 跟隨控制器正確地將客戶訂單詳細信息發送到視圖。 但是,如果我將訂單實體替換為地址實體,則傳遞給Partial視圖的模型始終為null。
問題 :我在這里可能會缺少什么?
注意 :通過放置斷點,我已驗證下面的控制器正確地將所選客戶的記錄發送到父視圖,並且還檢查了Db該客戶在地址表中是否具有相應的地址記錄。 另一個觀察結果是,即使我通過Visual Studio控制台刪除了customer
與order
和address
實體之間的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.