首页 > 解决方案 > EF Core 3.1 中的组加入

问题描述

我正在尝试将它返回的问题分组加入 EF core 3.1

处理 LINQ 表达式 'DbSet 失败。这可能表示 EF Core 中的错误或限制

我的代码是这样的

 var employees = await (from enrollment in RepositoryContext.Enrollments
                join allowance in RepositoryContext.Allowances.Include(y=>y.AllowanceType) on enrollment.EmployeeId equals allowance.EmployeeId
                    into allowances

                select new
                {
                    enrollment,
                    allowances

                }
            ).AsNoTracking().ToListAsync();

津贴是项目清单,是否有任何解决方法可以像这样运行查询,因为我需要它以获得更好的性能。

标签: c#entity-framework-corelinq-to-entitiesasp.net-core-3.1entity-framework-core-3.1

解决方案


这里Query with GroupBy 或 GroupJoin throws exception是现已关闭的 GitHub 问题/讨论,我试图说服 EF Core 团队添加GroupJoin翻译。他们拒绝这样做,并在最终查询运算符#19930 时打开了无用的查询:支持 GroupJoin,我继续为此类翻译而战。所以请去那里评论/投票支持完整的翻译请求。

您还将在那里找到解决方法 - 而不是不受支持GroupJoin的使用等效支持的相关子查询方法,例如替换

join allowance in RepositoryContext.Allowances.Include(y => y.AllowanceType)
    on enrollment.EmployeeId equals allowance.EmployeeId
into allowances

let allowances = RepositoryContext.Allowances.Include(y => y.AllowanceType)
    .Where(allowance => enrollment.EmployeeId == allowance.EmployeeId)

推荐阅读