Tengo curiosidad por saber en qué punto de la cadena de llamadas debe incluirse cuando se utiliza Entity Framework. Considere siguiente método:¿En qué parte de la cadena de llamadas debe estar incluida la extensión EF LINQ()?
// sample usage from service layer
// _customerRepository.Paginate(1, out totalRecords, 25, "DateJoined DESC, AmountSpent", "DateJoined >= '2009-02-01'", "Invoices, Refunds");
public virtual IQueryable<T> Paginate(int page, out int total, int pageSize, string sort = "Id", string filter = null, string includes = null)
{
IQueryable<T> query = DatabaseSet;
total = query.Count(); // get total # of records (required for pagination)...
var skipTo = GetValidSkipCount(page, total, pageSize);
if (!String.IsNullOrWhiteSpace(filter))
{
query.Where(filter);
}
// should includes be before filtering?
// should query.Count() be called after query.Include?
// does it matter?
if (!String.IsNullOrWhiteSpace(includes))
{
query.IncludeMany(includes); // my own extension that takes comma separated string of entities to include
}
return query.OrderBy(sort).Skip(skipTo).Take(pageSize);
}
Mis preguntas son:
- debe incluir siempre estar por primera vez en la cadena de llamadas?
- ¿Count() se ve afectado por Include? Si es así, supongo que debo hacer el recuento después de incluir
- debe incluir ser antes o después del filtrado (dónde)?
- ¿realmente importa porque EF es lo suficientemente "inteligente" como para descubrirlo todo?
Solo una nota/pregunta, ¿No utilizas también incluir cuando estás ansioso por cargar? – Zapnologica