我的数据库中有一个进化进度的父子表
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
的演变 A0
B0
然后使用函数为每个人创建一个列表,以便从db:
中引入子项 List<Evolution> A0 = GetEvolutionListFor ('A0');
List<Evolution> B0 = GetEvolutionListFor ('B0');
最后在ViewBag中传递List
List<List<Evolution>> EvolutionList = New List<List<Evolution>>() {
A0, A1 };
ViewBag.Evolutions = EvolutionList ;
我没有显示问题,我可以创建一个Evolution模板来渲染每个表格单元格中的对象。
我的问题是将数据引入模型的最佳方法。
现在是一个查询,为每个节点带来根节点和另外一个查询以带来列表。
我应该一次性检索所有行并在我的客户端应用程序上构建列表。或者有没有办法直接从数据库中检索数据?
答案 0 :(得分:0)
假设您可以同时将所有记录保存在内存中,您应该对所有对象进行一次查询,然后在内存中构建数据结构。假设您正在使用Entity Framework并且具有Parent关系,那么它将是:
List<Evolutions> evolutions;
using (var context = new MyContext()) {
evolutions = context.Evolutions.Include( e => e.Parent);
}
然后,您将在内存中构建数据结构。