迭代查询结果出错



我有一个名为companyContext的上下文。有三个表报告,日志和员工。我给了一个案例id,我需要得到属于某个案例的所有员工的列表(如果有一个日志,但我还不需要担心)。我做了一个查询获取所有EmployeeID等于Employee的雇员。ID,其中报告的CaseID等于case.id。但是,它不是返回一个列表,而是返回一个[Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable}]

我的查询是否正确?谢谢你的家伙。

var employees  = await context.Reports.Include(s => s.Employee)
.ThenInclude(e => e.ID)
.AsNoTracking()
.Where(r => r.CaseID == Case.Id);

模型
public class Log
{
    public int ID { get; set; }
    public string Input { get; set; }
    public string Tag { get; set; }
    public DateTime LogDate { get; set; }
    public ICollection<Report> Reports { get; set; }
}
public class Employee
{
    public int ID { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
    public ICollection<Report> Reports { get; set; }
}
public class Report
{
    public int ID { get; set; }
    public string CaseID { get; set; }
    public int EmployeeD { get; set; }
    public int? LogID { get; set; }
    public Employee Employee { get; set; }
    public Log Log { get; set; }
}

SingleOrDefaultAsync

如果序列中有多个元素,

将抛出异常。

所以你不应该使用SingleOrDefaultAsync如果你期望多个记录

如果我正确地解释了你的问题,并且你想要员工自己,你可以从他们开始,然后通过Employee类的.Reports导航属性缩小范围。

var employees = await context.Employees.AsNoTracking()
  .Where(e => e.Reports.Any(r => r.CaseID == case.Id))
  .ToListAsync();

所以实体实际上就像使用一个真正的数据库。我必须使用where和select子句,还要使用toList将其转换为可读的内容。

var employees  = await context.Reports.Where(r => r.CaseID == Case.Id);
.Select(r => r.Employee)
.ToList(); 

最新更新