Con los cambios a .NET Core 3.0 estoy obteniendo
... NavigationExpandingExpressionVisitor 'falló. Esto puede indicar un error o una limitación en EF Core. Consulte https://go.microsoft.com/fwlink/?linkid=2101433 para obtener información más detallada.) ---> System.InvalidOperationException: Procesando la expresión LINQ 'GroupJoin, ...
Esta es una consulta realmente simple, por lo que debe haber una forma de realizarla en .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();
Básicamente, estoy buscando una consulta de Linq (o la sintaxis del método como la anterior) que unirá Estudios en pacientes y establecerá los Estudios en una lista vacía o nula si no hay estudios para el paciente dado.
¿Algunas ideas? Esto funcionaba en .NET Core 2.2. Además, el enlace de MSFT anterior menciona que el cambio de ruptura de clave está relacionado con la evaluación del lado del cliente y evita que la consulta generada lea tablas completas que luego deben unirse o filtrarse del lado del cliente. Sin embargo, con esta simple consulta, la unión debería ser fácilmente factible en el lado del servidor.
fuente
groupby
en uniones izquierdas donde hacerlo no retire más filas de lo esperado. Publiqué un comentario en consecuencia.Tenía exactamente el mismo problema y una gran lucha con él. Resulta que .net Core 3.0 no es compatible con Join o Groupjoin en la sintaxis del método (¿todavía?). Sin embargo, la parte divertida es que funciona en la sintaxis de consulta.
Pruebe esto, es una sintaxis de consulta con un poco de sintaxis de método. Esto se traduce muy bien en la consulta SQL correcta con una buena combinación externa izquierda y se procesa en la base de datos. No tengo sus modelos, así que deben verificar la sintaxis ustedes mismos ...
fuente