EF core 5 - Lambda expresión utilizada dentro No es válido
No sé por qué, pero tengo un error.
Expresión de lambda utilizada dentro No es válido
cuando ejecute esta consulta. ¿Qué estoy haciendo mal?
var case = caseRepo
.Many(c => c.Id == caseId)
.Include(c => c.Progresses as AesProgress)
.ThenInclude(p => p.ProgressType)
.Include(c => c.Progresses as AesProgress)
.ThenInclude(p => p.Situation)
.Include(c => c.AesCaseCategories)
.ThenInclude(acc => acc.ExpertSupportNomination)
.Include(c => c.LegalBasisList)
.ThenInclude(l => l.AssessedAccordingToLaw)
.Include(c => c.AesCaseCategories)
.ThenInclude(acc => acc.PendingLawsuit)
.Include(c => c.AesCaseCategories)
.ThenInclude(acc => acc.Injury)
.SingleOrDefault();
Pregunta hecha hace 3 años, 5 meses, 2 días - Por quantumcoder403a
2 Respuestas:
-
El error que estás experimentando puede estar relacionado con cómo estás utilizando las expresiones lambda en tu consulta. Te propongo la siguiente corrección en tu código:
csharp var case = caseRepo .Where(c => c.Id == caseId) .Include(c => c.Progresses) .ThenInclude(p => p.ProgressType) .Include(c => c.Progresses) .ThenInclude(p => p.Situation) .Include(c => c.AesCaseCategories) .ThenInclude(acc => acc.ExpertSupportNomination) .Include(c => c.LegalBasisList) .ThenInclude(l => l.AssessedAccordingToLaw) .Include(c => c.AesCaseCategories) .ThenInclude(acc => acc.PendingLawsuit) .Include(c => c.AesCaseCategories) .ThenInclude(acc => acc.Injury) .SingleOrDefault();
En lugar de utilizar
Many
para la primera condición de tu consulta, utilizaWhere
. Además, no es necesario usaras
al especificar los tipos de Include. Simplemente especifica el nombre de la propiedad en la entidad principal y luego usaThenInclude
para incluir las entidades relacionadas.Intenta realizar estos cambios en tu código y prueba nuevamente la consulta para ver si resuelve el error que estás experimentando.
Respondida el Dec 22, 2020 a las 08:29 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El error "Expresión de lambda utilizada dentro No es válido" en EF Core 5 generalmente ocurre cuando se intenta incluir una propiedad de navegación en una consulta LINQ que utiliza una expresión lambda. En este caso, estás intentando incluir múltiples propiedades de navegación (por ejemplo,
Progresses
,AesCaseCategories
, etc.) utilizando la expresión lambdac => c.Id == caseId
.Para resolver este problema, puedes utilizar el método
Include
de EF Core para especificar explícitamente las propiedades de navegación que deseas incluir en la consulta. Aquí tienes cómo puedes modificar tu código:csharp var case = caseRepo .Include(c => c.Progresses) .ThenInclude(p => p.ProgressType) .ThenInclude(p => p.Situation) .Include(c => c.AesCaseCategories) .ThenInclude(acc => acc.ExpertSupportNomination) .Include(c => c.LegalBasisList) .ThenInclude(l => l.AssessedAccordingToLaw) .Include(c => c.AesCaseCategories) .ThenInclude(acc => acc.PendingLawsuit) .Include(c => c.AesCaseCategories) .ThenInclude(acc => acc.Injury) .SingleOrDefault(c => c.Id == caseId);
En este código modificado, hemos utilizado el método
Include
para especificar explícitamente cada propiedad de navegación que queremos incluir en la consulta. Esto debería resolver el error y permitirte ejecutar la consulta correctamente.Respondida el Dec 22, 2020 a las 08:42 - por Gemini
Votos positivos: 0 | Votos negativos: 0