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

标签 c# asp.net-core entity-framework-core

下面我在 LINQ Includes 中使用 lambda 表达式 1 级,使用三个实体获取客户列表,主要的一个是所有客户,只有 2 个属性 Id 和 bool:IsCompany,第二个只有那些公司,而第三个只有那些个人。下面的代码使用 .Net Core 2.2 工作,当我更新到 3.0 时它停止工作,我能找到的大多数是多级解决方案,例如 包含 -> 然后包含 不能在这里工作。
和版本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子句用于检索相关对象。应使用指定链接实体的 lambda 调用这些方法,但不说明 .Name (因为这是一个属性):

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

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

关于c# - Entity Framework Core 3.0 - Include 中使用的 Lambda 表达式无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418278/

相关文章:

c# - EF Core,当我只有一个包含类型的字符串变量时,如何查询我的 DbContext?

c# - Entity Framework Core 包含来自子类的不同属性

c# - 抛出异常时如何防止调试器进入我的方法?

c# - try catch block

c# - EntityFramework 核心 2 - ValueGeneratedOnAddOrUpdate

c# - SQL Server 登录前握手(错误 : 31 - Encryption(ssl/tls) handshake failed)

共同 friend 类的 C# 解决方法

c# - 上传前如何重命名文件

authentication - ASP.NET Core 中特定路由的 NTLM 身份验证

c# - EF Core 3.0 可为空的导航属性