EF Joins和MVC Razor Views

时间:2011-08-03 14:15:48

标签: asp.net-mvc entity-framework asp.net-mvc-3 razor

我有几个表,它们的关系基于唯一的键约束。

一个简单的例子是:

VersionId,VersionName
SurveyId,SurveyName,VersionId
QuestionId,QuestionName,SurveyId,VersionId

EF目前不支持基于唯一键约束的关系。在我的索引视图中,问题是什么是处理联接调查的最佳方式,以显示关于模型的调查名称的问题网格?

我需要一个匿名类型吗? db.Questions.Include(“Surveys”)似乎没有做任何事情。我可以使用linq并创建连接表的ViewModel(我怀疑这是要走的路),但EF& MVC,我以为我在做任何事之前都要检查。

2 个答案:

答案 0 :(得分:1)

为什么在调查表和问题表中都有版本(即VersionID)的链接?你能不能通过调查从问题中找到版本?

此外,如果您的问题与调查之间的关系是多对一或一对一(每个问题只有一个调查),那么它应该是db.Questions.Include("Survey") - 非复数

答案 1 :(得分:1)

首先,剃刀视图中没有连接(或几乎任何其他逻辑)。 Controller是构建ViewModel的地方,而视图只是呈现ViewModel的手段。正如您所提到的,为ViewModel制作它只是(正确的)方法。您可以通过任何方法填充该视图模型 - linq是创建连接数据的绝对正常方式。如果你想更进一步,你应该将连接逻辑放在某种存储库中,例如QuestionRepository,而不是控制器。