[英]How pass a parent child table to my view
我的數據庫中有一個Evolution進展的父子表
EvolutionID ParentID otherFields
A0 NULL *
A1 A0 *
A2 A1 *
B0 NULL *
B1 B0 *
B2 B1 *
我需要顯示在我的asp.net-mvc頁面中,如下所示:
-------------------------------------
| A0 | A1 | A2 |
| field.* | fields.* | fields.* |
-------------------------------------
| B0 | B1 | B2 |
| field.* | fields.* | fields.* |
-------------------------------------
我現在能做的是先讀取parentID = null的Evolutions
A0
B0
然后使用函數從db提取子對象,為每個列表創建一個列表:
List<Evolution> A0 = GetEvolutionListFor ('A0');
List<Evolution> B0 = GetEvolutionListFor ('B0');
最后在ViewBag中傳遞列表
List<List<Evolution>> EvolutionList = New List<List<Evolution>>() {
A0, A1 };
ViewBag.Evolutions = EvolutionList ;
我的顯示沒有問題,我可以創建一個Evolution模板以在每個表單元格中呈現對象。
我的問題是將數據帶入模型的最佳方法是什么。
現在是一個查詢以帶出根節點,另一個查詢是每個節點以帶出列表。
我是否應該一次檢索所有行並在客戶端應用程序上構建列表。 還是有一種方法可以直接從數據庫中檢索該數據?
假設可以將所有記錄同時保存在內存中,則應該對所有對象進行一次查詢,然后在內存中構建數據結構。 假設您使用的是Entity Framework,並且具有Parent關系,則可能會發生以下情況:
List<Evolutions> evolutions;
using (var context = new MyContext()) {
evolutions = context.Evolutions.Include( e => e.Parent);
}
然后,您將在內存中構建數據結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.