EF Core 3.1中的群组连接

9

我将尝试在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();

这个allowances是一个项目列表, 有没有什么变通方法可以运行像这样的查询,因为我需要它来提高性能。

1个回答

9
这里是已关闭的GitHub问题/讨论(查询与GroupBy或GroupJoin引发异常),我试图说服EF Core团队添加GroupJoin翻译。他们拒绝了我的请求,并开放了无用的Query:支持GroupJoin作为最终查询运算符#19930,在那里我继续争取此类翻译。因此,请前往那里并评论/投票以获取完整的翻译请求。
您还将在那里找到解决方法-代替不支持的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)

谢谢,我会点赞和评论。使用let会增加对数据库的请求,是吗? - Mustafa Mohamed
1
@MustafaMohamed 在GitHub功能请求中获得更多的投票可以增加被考虑/实现的机会。 - Ivan Stoev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接