Saltar al contenido

¿Cómo realizar una unión de grupo en .NET Core 3.0 Entity Framework?

Solución:

Como se discutió aquí, está intentando una consulta que no es compatible con la base de datos. EF Core 2 usó la evaluación del lado del cliente para hacer que su código funcione, pero EF Core 3 se niega, porque la conveniencia del lado del cliente tiene el costo de problemas de rendimiento difíciles de depurar a medida que aumenta el conjunto de datos.

Puedes usar usar DefaultIfEmpty a la izquierda unirse a los estudios de pacientes y luego agrupar manualmente con ToLookup.

var query =
    from p in db.Patients
    join s in db.Studies on p.Id equals s.PatientId into studies
    from s in studies.DefaultIfEmpty()
    select new { Patient = p, Study = s };

var grouping = query.ToLookup(e => e.Patient); // Grouping done client side

El ejemplo anterior toma las entidades completas de Paciente y Estudio, pero en su lugar puede seleccionar columnas. Si los datos que necesita del paciente son demasiado grandes para repetirlos para cada estudio, en la consulta combinada seleccione solo el ID del paciente y consulte el resto de los datos del paciente en una consulta no combinada separada.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *