如何将父子表传递给我的视图

时间:2018-04-07 20:50:41

标签: c# asp.net-mvc list

我的数据库中有一个进化进度的父子表

 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模板来渲染每个表格单元格中的对象。

我的问题是将数据引入模型的最佳方法。

现在是一个查询,为每个节点带来根节点和另外一个查询以带来列表。

我应该一次性检索所有行并在我的客户端应用程序上构建列表。或者有没有办法直接从数据库中检索数据?

1 个答案:

答案 0 :(得分:0)

假设您可以同时将所有记录保存在内存中,您应该对所有对象进行一次查询,然后在内存中构建数据结构。假设您正在使用Entity Framework并且具有Parent关系,那么它将是:

List<Evolutions> evolutions; 
using (var context = new MyContext()) {
    evolutions = context.Evolutions.Include( e => e.Parent);
}

然后,您将在内存中构建数据结构。