实体框架核心 3.0 - 包含中使用的 Lambda 表达式无效



下面我在 LINQ Include 中使用 lambda 表达式进行 1 级,以使用三个实体获取客户列表,主要实体适用于所有客户,只有 2 个属性 Id 和 bool:IsCompany,第二个只有公司,第三个只有个人。下面的代码使用 .Net Core 2.2 工作,当我更新到 3.0 时它停止工作,我能找到的大多数都是多级解决方案,例如Include->ThenIclude,在这里不起作用。 版本 3.0 的重大更改未提及这种情况。

public async Task<ActionResult<IEnumerable<CustomersListVM>>> GetCustomers()
{
List<CustomersListVM> customerList = await _context.Customers
.Include(p => p.Company.Name)
.Include(p => p.Individual.Name)
.Select(p => new CustomersListVM
{
Id = p.Id,
CustomerId = p.CustomerId,
Name = p.IsCompany == true ? p.Company.Name : p.Individual.LastName + ' ' + p.Individual.FirstName
}).ToListAsync();
return customerList;
}

知道吗?

Include子句用于检索相关对象。这些方法应该使用 lambda 指定链接实体来调用,但不说明.Name(因为这是一个属性(:

.Include(p => p.Company)
.Include(p => p.Individual)

然后在Select方法中,您指定只需要公司/个人的Name

最新更新