【发布时间】:2019-12-19 23:48:37
【问题描述】:
下面我在 LINQ Includes 中使用 lambda 表达式为 1 级,使用三个实体获取客户列表,主要的是所有客户,并且只有 2 个属性 Id 和 bool:IsCompany,第二个只有那些是公司的,而第三个只有那些是个人的。下面的代码使用 .Net Core 2.2 工作,当我更新到 3.0 时它停止工作,我能找到的大多数是多层次的解决方案,例如 Include -> ThenIclude不能在这里工作。 而版本3.0 breaking changes就没有提到这个案例了。
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("Full.Path.ToChild"),它工作正常 -
我这里只使用了一层
-
删除包含子句中的
.Name。 -
@James,谢谢你,它有效,出于性能原因,我只包括属性。现在响应速度有点慢,但它有效。请做出你的回答。
-
@Sami-L 我建议完全删除它们。 Select 处理您需要加入 Compay 和 Individual 表的事实。
标签: c# asp.net-core entity-framework-core