You need to enable JavaScript to run this app. 主从CRUD中如何查询特定ID对应的TaBarBody关联记录
优惠活动
大模型
产品
解决方案
定价
更多

主从CRUD中如何查询特定ID对应的TaBarBody关联记录

方案1:修改从表查询逻辑,添加过滤条件

首先给BarBody仓储层新增按主表ID筛选的方法:

// 在BarBody的仓储类中添加如下方法
public IEnumerable<TaBarBody> GetBarBByHeaderId(int headerId)
{
    return _db.TaBarBodies
        .Include(t => t.AnulatFk)
        .Include(t => t.ImpactFk)
        .Include(t => t.BarHeaderFk)
        .Include(t => t.BarTelegramaFk)
        .Where(t => t.BarHeaderId == headerId) // 新增过滤条件:外键等于当前主表ID
        .ToList();
}

再修改控制器的Details方法,替换原来的全量查询逻辑:

public IActionResult Details(int id)
{
    HeaderTelegramaViewModel headerTelegramaViewModel = new HeaderTelegramaViewModel();
    headerTelegramaViewModel.TaBarHeader = _unitofwork.BarHeader.DetailsBarH(id);
    // 调用新增的过滤方法,传入当前主表ID
    headerTelegramaViewModel.taBarBody = _unitofwork.BarBody.GetBarBByHeaderId(id);
    return View(headerTelegramaViewModel);
}

方案2:利用导航属性预加载,无需额外查询从表

你的TaBarHeader模型已经定义了List<TaBarBody> TaBarBodies关联导航属性,直接在主表查询时预加载关联的从表数据,代码更简洁,也符合EF的设计规范:
首先修改DetailsBarH方法,添加从表导航属性的预加载逻辑:

public TaBarHeader DetailsBarH(int? id)
{
    return _db.TaBarHeaders
        .Include(t => t.CategoriaFk)
        .Include(t => t.CauzaFk)
        // 新增:预加载当前主表关联的从表集合,同时加载从表需要的关联属性
        .Include(t => t.TaBarBodies)
            .ThenInclude(b => b.AnulatFk)
        .Include(t => t.TaBarBodies)
            .ThenInclude(b => b.ImpactFk)
        .Include(t => t.TaBarBodies)
            .ThenInclude(b => b.BarTelegramaFk)
        .FirstOrDefault(m => m.Id == id);
}

再修改控制器的Details方法,直接使用主表的关联从表集合即可:

public IActionResult Details(int id)
{
    HeaderTelegramaViewModel headerTelegramaViewModel = new HeaderTelegramaViewModel();
    headerTelegramaViewModel.TaBarHeader = _unitofwork.BarHeader.DetailsBarH(id);
    // 主表的TaBarBodies已经是和当前主表ID关联的从表记录,直接赋值即可
    headerTelegramaViewModel.taBarBody = headerTelegramaViewModel.TaBarHeader.TaBarBodies;
    return View(headerTelegramaViewModel);
}

两种方案均无需修改原有视图代码,即可实现仅展示当前主表对应从表记录的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 12:06:02