Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

567
Visualizações
EF Core 3.1: el filtrado de inclusión genera un error "La expresión lambda utilizada dentro de Incluir no es válida".

Tengo la tabla Item (Principal) y la tabla ItemAlt (Sub (Lista)) Quiero obtener todas las filas alternativas de elementos donde:

  1. ItemAlt.WarehouseId es igual al parámetro warehouseId

  2. Item.Id es igual al parámetro itemId

     public async Task<Item> GetItemWithAlt(int itemId, int warehouseId) { var query = from i in _dbContext.Item.Include(a => a.ItemAlt.Where(c => c.WarehouseId == warehouseId && c.IsActive == true)) where i.IsActive.Equals(true) && i.Id.Equals(itemId) select i; return await query.SingleOrDefaultAsync(); }

el problema es que arroja la excepción " La expresión lambda utilizada dentro de Incluir no es válida " en

 .Where(c => c.WarehouseId == warehouseId && c.IsActive == true)

¿Sabes cómo solucionar este problema?

  • Ya intenté buscar el mensaje de error pero las consultas son diferentes a las mías
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Las inclusiones filtradas solo están disponibles desde EF Core 5.0, como indican los documentos :

Esta función se introdujo en EF Core 5.0.

Por lo tanto, debe actualizar su proyecto a las versiones correspondientes de .NET y EF Core o reescribir la consulta para unirse manualmente con ItemAlt filtrado.

O intente seleccionar el tipo anónimo y confíe en la corrección de la relación. Algo así (no probado):

 var result = await _dbContext.Item .Where(i => i.IsActive.Equals(true) && i.Id.Equals(itemId)) .Select(i => new { Item = i, ItemAlts = i.ItemAlt .Where(c => c.WarehouseId == warehouseId && c.IsActive == true)) .ToList() } .SingleOrDefaultAsync(); return result?.Item;
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda