刚开始使用EF并且无法弄清楚我是否正在思考错误,或者我只是错过了一些简单的事情。
我正在尝试在一个窗口中获取与SendRule链接的Institution,SendRule和CrimeType信息。
在Controller中,我传递给模型数据,如下所示:
var institution = await _context.Institution
.Include(i => i.Rules)
.ThenInclude(r => r.SendRule)
.ThenInclude(c => c.CategoriesToSend)
.ThenInclude(cr => cr.CrimeType)
.AsNoTracking()
.SingleOrDefaultAsync(m => m.InstitutionID == id);
在View中,我会显示所有内容:
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<table class="table">
<tr>
<th>Rule Name</th>
<th>Cron</th>
<th>Categories</th>
</tr>
@foreach (var item in Model.Rules)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.SendRule.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.SendRule.Cron)
</td>
<td>
@foreach (var item2 in Model.Rules)
{
@Html.DisplayFor(modelThing => item2.SendRule.CategoriesToSend)
}
</td>
</tr>
}
</table>
但是从item2.SendRule.CategoriesToSend我无法导航到CrimeType。是因为它的多对一关系?我错过了什么?
答案 0 :(得分:0)
耶稣,我是愚蠢的。而不是
@foreach (var item2 in Model.Rules)
{
@Html.DisplayFor(modelThing => item2.SendRule.CategoriesToSend)
}
应该是
@foreach (var item2 in item.SendRule.CategoriesToSend)
{
@Html.DisplayFor(modelThing => item2.CrimeType.Description)
}