繁体   English   中英

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

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM