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

EF Core 8:条件关联查询员工与假期,无匹配假期仍返回员工

问题场景

需要查询Employees和Holidays集合,核心要求是即使没有找到符合指定条件的假期,仍需返回符合条件的员工。

实体定义

public class Employee
{
    public Guid Id { get; set; }
    public List<Holiday> Holidays { get; set; } = [];
}

public class Holiday
{
    public Guid Id { get; set; }
    public Guid EmployeeId { get; set; }
    public DateTime Date { get; set; }
}

查询需求

编写GetEmployee方法,需实现以下逻辑:

  • 根据员工Id搜索目标员工
  • 依据IncludeHolidays枚举值控制假期的包含规则,枚举选项包括:不包含假期、包含所有假期、包含历史假期、包含未来假期

初始代码问题

最初编写的方法存在两个关键问题:

  1. 嵌套Where调用导致代码无法编译
  2. 使用Holidays.Any会直接排除掉没有匹配假期的员工,无法实现类似SQL左连接的效果

后续问题与解决

改用Filtered Include查询后,发现假期日期过滤规则未生效——生成的SQL语句是正确的,但返回结果却包含了所有假期。查阅EF Core文档后得知,跟踪查询的导航修复机制会导致Filtered Include的结果异常,在查询中添加AsNoTracking()即可解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:42:40