Entity Framework Core 3.0 - Include 中使用的 Lambda 表达式无效

Sam*_*i-L 16 c# entity-framework-core asp.net-core

下面我在 LINQ Includes 中使用 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;
    }
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?

Jam*_*mes 17

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

.Include(p => p.Company)
.Include(p => p.Individual)
Run Code Online (Sandbox Code Playgroud)

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