You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Entity Framework Core 6/7从关联表检索并显示职位与地点名称

解决方案

要显示职位名称(JobTitle)和地点名称(LocationName),你需要通过EF Core的ThenInclude方法加载CustomerLocations关联的Job和Location实体——因为CustomerLocations是连接Customer、Job、Location的中间表,仅靠Include(cl => cl.CustomerLocations)只能拿到中间表数据,无法直接获取关联表的名称字段。

1. 修改查询代码

更新你的EF Core查询,通过ThenInclude嵌套加载关联实体:

List<Customer> customerList = await _context.Customers
    .Include(cl => cl.CustomerLocations)
        .ThenInclude(cl => cl.Job) // 加载CustomerLocations关联的Job实体
    .Include(cl => cl.CustomerLocations)
        .ThenInclude(cl => cl.Location) // 加载CustomerLocations关联的Location实体
    .ToListAsync();

2. 视图层实现对应效果

根据你期望的视图逻辑,调整视图代码如下:

@for (int i = 0; i < Model.customersList.Count; i++)
{
    <tr>
        <td>@Model.customersList[i].CustomerName</td>
        <td>
            @* 显示第一个关联的职位名称,若有多个可自行调整逻辑 *@
            @Model.customersList[i].CustomerLocations.FirstOrDefault()?.Job?.JobTitle
        </td>
        <td>
            @* 用逗号拼接所有关联的地点名称 *@
            @string.Join(", ", Model.customersList[i].CustomerLocations.Select(cl => cl.Location?.LocationName))
        </td>
    </tr>
}

补充说明

  • 如果一个客户对应多个职位,可参考地点的写法,用string.Join拼接所有职位名称:
    @string.Join(", ", Model.customersList[i].CustomerLocations.Select(cl => cl.Job?.JobTitle))
    
  • 注意使用?.空值运算符避免空引用异常,确保当关联实体不存在时不会报错。

内容的提问来源于stack exchange,提问作者MKN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:32:51