Esto se explica probablemente con algo de código:Devolución Enumerable.Empty <T>() .AsQueryable() ¿una mala idea?
public IQueryable<DatabaseRecord> GetQueryableLinkedRecords()
{
if(this.currentlyHeldIds.Count() == 0)
{
return Enumerable.Empty<DatabaseRecord>().AsQueryable();
}
else
{
return from r in this.DBContext.DatabaseRecords
where this.currentlyHeldIds.Contains(r.Id)
select r;
}
}
La idea es que no hay razón para consultar hecho el PP de nuevo si no hay de currentlyHeldId para consultar sucesivamente. LINQ to SQL aún consultará el db si actualmenteHeldIds no tiene valores. ¿Hay algo malo con este enfoque? Me doy cuenta de que hay otras preocupaciones relacionadas con el retorno de IQueryable en general, pero dejando esos argumentos de lado, ¿hay algo de malo en tratar de eludir la llamada a db de esta manera?
Buen punto, no había considerado la ejecución diferida. El contenido de 'currentlyHeldIds' podría haber cambiado entre cuando se llamó al método y cuando se hubiera iterado. – Davy8
Muy buenos puntos, definitivamente no se ha considerado el aspecto de la ejecución diferida de la misma. – Ocelot20