在MVC EF中导航多个关系

时间:2017-04-24 14:10:57

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

刚开始使用EF并且无法弄清楚我是否正在思考错误,或者我只是错过了一些简单的事情。

enter image description here

我正在尝试在一个窗口中获取与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。是因为它的多对一关系?我错过了什么?

1 个答案:

答案 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)
}