从一对多关系中的多个表组成的模型中获取数据

时间:2010-03-02 01:13:05

标签: c# asp.net-mvc entity-framework ado.net-entity-data-model

我有一个关于asp.net MVC模型的相对简单的问题。

我有一个基于两个表的模型,这些表以一对多关系链接。

表AnimalGroup(ID,名称)

表AnimalSubGroup(ID,name,AnimalGroupID)

每个AnimalGroup都有任意数量的AnimalSubgroup。

如何遍历每个AnimalGroup的AnimalSubGroups并获取AnimalSubGroup.name(例如)?我是asp.net MVC的新手,并且一直在学习各种教程,但是虽然他们非常适合设置基本应用程序并从单个表中获取结果,但我对如何获得结果感到困惑来自同一模型中链接的几个表。我已经看到对ViewModel的引用作为解决方案,但似乎ViewModel对于将来自两个不相关的表的数据放入单个View中更有用。

提前致谢。

2 个答案:

答案 0 :(得分:0)

首先。您是否在数据库中定义了外键?如果是,edmx模型生成器将定义所有连接。如果没有,立即行动吧。完成后,您可以通过以下方式选择子组名称:

  1. 直接从上下文中获取:

    context.AnimalSubGroupSet.Where(sg => sg.AnimalGroupID = requestedAnimalGroupID).Select(sg => sg.Name).ToList;

  2. 从AnimalGroup获取:

    animalGroup.AnimalSubGroups.Select(sg => sg.Name);

  3. 此代码可能需要调整,但它们不应该很复杂。

答案 1 :(得分:0)

也许您应该看看LINQ的SelectMany查询运算符。该子迭代在一对多数据表关系上。请注意,您可以链接SelectMany调用:

var mymanyselections = datacontext.parenttable.SelectMany(l=>l.Name).SelectMany(m=>m.Name);

这假设您的数据表中存在外键关系。