我尝试执行以下代码:
await _dbContext.Customers.Select(x => x.CustomerNr).DefaultIfEmpty(0).MaxAsync() + 1;
本质上,它必须从数据库中获取最高的客户编号并将其添加1。如果客户表为空,则应返回0,再加上1。为什么会出现以下异常:
编辑: 我正在使用.NET Core 3.1和EF Core 3.0.1(与EF Core 3.1.0相同的错误)
答案 0 :(得分:4)
避免使用默认值DefaultIfEmpty
重载-EF Core查询翻译器不支持它。
除了左外部联接模式外,通常还避免对其他任何情况DefaultIfEmpty
进行无参数重载,因为尽管受支持,但SQL转换非常奇怪。
要解决在空集上应用Max
,Min
和Average
方法的问题,请使用可为空的重载,将空集返回null
并转换{{ 1}}的结果为0(或其他所需的魔术值)。
将其应用于您的方案将是这样的(假设null
类型为CustomerNr
)
int