Групповое объединение в EF Core 3.1 - PullRequest
4 голосов
/ 08 марта 2020

Я пытаюсь сгруппировать объединение в 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();

допуска список элементов, есть ли Любой обходной путь для выполнения запроса, как этот, потому что он мне нужен для лучшей производительности.

1 Ответ

1 голос
/ 08 марта 2020

Здесь Запрос с GroupBy или GroupJoin выдает исключение - это закрытая проблема / обсуждение GitHub, где я пытался убедить команду EF Core добавить перевод GroupJoin. Они отказались это сделать и открыли бесполезный Запрос: Поддержка GroupJoin, когда это последний оператор запроса # 19930 , где я продолжаю борьбу за такой перевод. Поэтому, пожалуйста, go там и комментируйте / голосуйте за полный запрос на перевод.

Вы также найдете там обходной путь - вместо неподдерживаемого 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...