ef core 存在问题,无法转换可空导航属性的条件
我正在为端点编写过滤器,并注意到一些奇怪的事情。
var employeeOnServices = await _context.ServiceRecords
.Where(x=>x.Employees != null)
.Where(x=> x.Status == ServiceStatusEnum.InProgress
|| x.Status == ServiceStatusEnum.OnHold)
.Select(x =>x.Employees.Select(y=>y.Id))
.ToListAsync(cancellationToken);
当我运行上面的代码片段时,当我删除时,我得到翻译为sql失败的错误
.Where(x=>x.Employees != null)
代码工作正常。员工与 ServiceRecords 表有多对多的关系,但据我所知,他们的类上的关系可以为空。
谢谢你
集合导航应始终不可为空。通过查看它是否为空集合,您应该能够实现您想要的目标:
var employeeOnServices = await _context.ServiceRecords
.Where(x=>x.Employees.Any())
.Where(x=> x.Status == ServiceStatusEnum.InProgress
|| x.Status == ServiceStatusEnum.OnHold)
.Select(x =>x.Employees.Select(y=>y.Id))
.ToListAsync(cancellationToken);