Ho una query EF6 che accetta un elenco di ID e fa una query:
public IList<Audit> AuditsByIDs(List<int> ids)
{
return _db.Audits
.Include(p => p.User)
.Where(p => ids.Any(i => i == p.Id)).ToList();
}
Funziona per un piccolo numero di ID , ma quando arriva a centinaia ottengo l'errore:
Alcune parti della tua istruzione SQL sono nidificate troppo profondamente. Riscrivi la query o suddividila in query più piccole.
Come faccio a restituire la query solo dopo che sono passati gli ID ? Non riesco a cambiare il database :(
Usa Contains
invece:
public IList<Audit> AuditsByIDs(List<int> ids)
{
return _db.Audits
.Include(p => p.User)
.Where(p => ids.Contains(p.Id)).ToList();
}
Quale dovrebbe essere trasformato in IN
all'interno della query SQL generata.