c# - 在 MVC EF 中导航多个关系

标签 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。是因为它是多对一的关系吗?我错过了什么?

最佳答案

老天,我傻了。而不是

@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)
}

关于c# - 在 MVC EF 中导航多个关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43590391/

相关文章:

c# - EF7 应用程序出现 ASP.NET 5 IIS 500 错误

c# - 应用插件系统

entity-framework - 如何使用 Entity Framework 对聚合进行建模?

.net - 无法解析符号 'ToTable' EF Core 2.2.0

asp.net-mvc - Html.BeginForm 使用 FormMethod.GET 丢失了 RouteValues

asp.net - 如何捕获实体数据源异常

c# - ListBox.SelectedIndexChanged - 你能确定它是否是用户发起的吗?

c# - 依赖注入(inject)及其与自动化测试的关系通过一个例子

c# - 如何在@Html.BeginForm中添加没有值的html属性

asp.net-mvc - asp.net mvc View 模型。它们应该包含多少逻辑(如果有)