Avec les modifications apportées à .NET Core 3.0, je reçois
... Échec de NavigationExpandingExpressionVisitor. Cela peut indiquer un bogue ou une limitation dans EF Core. Voir https://go.microsoft.com/fwlink/?linkid=2101433 pour des informations plus détaillées.) ---> System.InvalidOperationException: Traitement de l'expression LINQ 'GroupJoin, ...
Il s'agit d'une requête très simple, il doit donc y avoir un moyen de l'exécuter dans .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();
Je recherche essentiellement une requête Linq (ou une syntaxe de méthode comme ci-dessus) qui joindra les études aux patients et définira les études sur une liste vide ou nulle s'il n'y a pas d'études pour le patient donné.
Des idées? Cela fonctionnait dans .NET Core 2.2. Le lien MSFT ci-dessus mentionne également que le changement de rupture de clé est lié à l'évaluation côté client et évite que la requête générée ne lit des tables entières qui doivent ensuite être jointes ou filtrées côté client. Cependant, avec cette simple requête, la jointure doit être facilement réalisable côté serveur.
la source
groupby
en jointures de gauche où cela ne fait pas reculer plus de lignes que prévu. J'ai posté un commentaire en conséquence.Eu exactement le même problème et une grande lutte avec lui. Il s'avère que .net Core 3.0 ne prend pas en charge Join ou Groupjoin dans la syntaxe de la méthode (pour le moment?). La partie amusante est cependant, cela fonctionne dans la syntaxe de requête.
Essayez ceci, c'est la syntaxe de requête avec un peu de syntaxe de méthode. Cela se traduit bien par la requête SQL correcte avec une belle jointure externe gauche et elle est traitée dans la base de données. Je n'ai pas vos modèles, vous devez donc vérifier vous-même la syntaxe ....
la source