С изменениями в .NET Core 3.0 я получаю
... NavigationExpandingExpressionVisitor 'не удалось. Это может указывать либо на ошибку, либо на ограничение в EF Core. См. Https://go.microsoft.com/fwlink/?linkid=2101433 для получения более подробной информации.) ---> System.InvalidOperationException: Обработка выражения LINQ 'GroupJoin, ...
Это действительно простой запрос, поэтому должен быть способ выполнить его в .NET CORE 3.0:
var queryResults1 = await patients
.GroupJoin(
_context.Studies,
p => p.Id,
s => s.Patient.Id,
(p, studies) => new
{
p.DateOfBirth,
p.Id,
p.Name,
p.Sex,
Studies =studies.Select(s1=>s1)
}
)
.AsNoTracking().ToListAsync();
Я в основном ищу запрос Linq (или синтаксис метода, как указано выше), который присоединит Исследования к Пациентам и установит Исследования пустым списком или пустым, если нет исследований для данного пациента.
Любые идеи? Это работало в .NET Core 2.2. Также ссылка MSFT выше упоминает, что изменение взлома ключа связано с оценкой на стороне клиента и избегает того, чтобы сгенерированный запрос считывал целые таблицы, которые затем должны быть присоединены или отфильтрованы на стороне клиента. Однако с этим простым запросом соединение должно быть легко выполнимым на стороне сервера.
источник
groupby
в левые соединения, где это не отодвигает больше строк, чем ожидалось. Я разместил комментарий соответственно.Была точно такая же проблема и большая борьба с ней. Оказывается, что .net Core 3.0 не поддерживает Join или Groupjoin в синтаксисе метода (пока?). Самое интересное в том, что он работает в синтаксисе запросов.
Попробуйте это, это синтаксис запроса с небольшим количеством синтаксиса метода. Это хорошо переводится в правильный запрос SQL с хорошим внешним левым соединением, и он обрабатывается в базе данных. У меня нет ваших моделей, поэтому вы должны сами проверить синтаксис ....
источник