我有一个关于asp.net MVC模型的相对简单的问题。
我有一个基于两个表的模型,这些表以一对多关系链接。
表AnimalGroup(ID,名称)
表AnimalSubGroup(ID,name,AnimalGroupID)
每个AnimalGroup都有任意数量的AnimalSubgroup。
如何遍历每个AnimalGroup的AnimalSubGroups并获取AnimalSubGroup.name(例如)?我是asp.net MVC的新手,并且一直在学习各种教程,但是虽然他们非常适合设置基本应用程序并从单个表中获取结果,但我对如何获得结果感到困惑来自同一模型中链接的几个表。我已经看到对ViewModel的引用作为解决方案,但似乎ViewModel对于将来自两个不相关的表的数据放入单个View中更有用。
提前致谢。
答案 0 :(得分:0)
首先。您是否在数据库中定义了外键?如果是,edmx模型生成器将定义所有连接。如果没有,立即行动吧。完成后,您可以通过以下方式选择子组名称:
直接从上下文中获取:
context.AnimalSubGroupSet.Where(sg => sg.AnimalGroupID = requestedAnimalGroupID).Select(sg => sg.Name).ToList;
从AnimalGroup获取:
animalGroup.AnimalSubGroups.Select(sg => sg.Name);
此代码可能需要调整,但它们不应该很复杂。
答案 1 :(得分:0)
也许您应该看看LINQ的SelectMany查询运算符。该子迭代在一对多数据表关系上。请注意,您可以链接SelectMany调用:
var mymanyselections = datacontext.parenttable.SelectMany(l=>l.Name).SelectMany(m=>m.Name);
这假设您的数据表中存在外键关系。