Wraz ze zmianami w .NET Core 3.0 otrzymuję
... NavigationExpandingExpressionVisitor 'nie powiodło się. Może to wskazywać na błąd lub ograniczenie w EF Core. Bardziej szczegółowe informacje można znaleźć na https://go.microsoft.com/fwlink/?linkid=2101433 .) ---> System.InvalidOperationException: Przetwarzanie wyrażenia LINQ „GroupJoin, ...
To jest naprawdę proste zapytanie, więc musi istnieć sposób na wykonanie go w .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();
Zasadniczo szukam zapytania Linq (lub składni metody jak wyżej), które połączy Studia nad Pacjentami i ustawi Studia na pustą listę lub zero, jeśli nie ma badań dla danego pacjenta.
Jakieś pomysły? Działa to w .NET Core 2.2. Również powyższy link MSFT wspomina, że zmiana podziału klucza jest związana z oceną po stronie klienta i unikaniem, aby wygenerowane zapytanie odczytywało całe tabele, które następnie należy połączyć lub przefiltrować po stronie klienta. Jednak przy tym prostym zapytaniu połączenie powinno być łatwe do wykonania po stronie serwera.