我有几个表,它们的关系基于唯一的键约束。
一个简单的例子是:
VersionId,VersionName
SurveyId,SurveyName,VersionId
QuestionId,QuestionName,SurveyId,VersionId
EF目前不支持基于唯一键约束的关系。在我的索引视图中,问题是什么是处理联接调查的最佳方式,以显示关于模型的调查名称的问题网格?
我需要一个匿名类型吗? db.Questions.Include(“Surveys”)似乎没有做任何事情。我可以使用linq并创建连接表的ViewModel(我怀疑这是要走的路),但EF& MVC,我以为我在做任何事之前都要检查。
答案 0 :(得分:1)
为什么在调查表和问题表中都有版本(即VersionID)的链接?你能不能通过调查从问题中找到版本?
此外,如果您的问题与调查之间的关系是多对一或一对一(每个问题只有一个调查),那么它应该是db.Questions.Include("Survey")
- 非复数强>
答案 1 :(得分:1)
首先,剃刀视图中没有连接(或几乎任何其他逻辑)。 Controller是构建ViewModel的地方,而视图只是呈现ViewModel的手段。正如您所提到的,为ViewModel
制作它只是(正确的)方法。您可以通过任何方法填充该视图模型 - linq是创建连接数据的绝对正常方式。如果你想更进一步,你应该将连接逻辑放在某种存储库中,例如QuestionRepository
,而不是控制器。