[英]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.