Utilizo Entity Framework Code First y me encontré con un pequeño bloque de carreteras. Tengo una clase "Persona" se define como tal:Código de Entity Framework First IQueryable
public class Person
{
public Guid Id { get; set; }
public virtual ICollection<History> History { get; set; }
}
y un "historial" clase definida como tal:
public class History
{
public Guid Id { get; set; }
public virtual Person Owner { get; set; }
public DateTime OnDate { get; set; }
}
Sin embargo, cuando llamo:
IEnumerable<History> results = person.History
.OrderBy(h => h.OnDate)
.Take(50)
.ToArray();
Parece para extraer toda la historia de la persona, luego ordenarla y tal en la memoria. ¿Alguna recomendación sobre lo que me estoy perdiendo?
¡Gracias de antemano!
¿Qué comportamiento esperabas ver? ¿No está logrando limitar el resultado a 50 registros? –
Creo que el comportamiento esperado es pedirlo en la base de datos –
Estaba esperando que envíe el pedido y limite al servidor, haciendo que el servidor SQL haga el pedido y la limitación. En su lugar, parece extraer todo el historial en la memoria, los más de 30,000 elementos para ese contacto y luego hacer el pedido y el límite en la memoria. – Terry