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公司/个人的 。