Pour revenir IQueryable<T> ou de ne pas retourner IQueryable<T>

J'ai un référentiel de classe qui encapsule mon LINQ to SQL Contexte de Données. Le référentiel de la classe est un métier de classe qui contient toutes les données de niveau logique (et la mise en cache et tel).

Voici mon v1 de mon repo interface.

public interface ILocationRepository
{
    IList<Location> FindAll();
    IList<Location> FindForState(State state);
    IList<Location> FindForPostCode(string postCode);
}

Mais pour gérer la pagination pour FindAll, je suis débats à savoir si ou de ne pas exposer IQueryable<ILocation> au lieu de IList de simplifier l'interface pour des circonstances telles que la pagination.

Quels sont les avantages et les inconvénients d'exposer IQueryable à partir des données repo?

Toute aide est très appréciée.

  • Comment sur l'utilisation de IEnumerable<T> dans le référentiel de l'interface?
  • Je ne suis pas pour l'utilisation de IEnumerable<T> dans le Référentiel ou BLL, car il peut affecter les performances dans le cas où vous ne payez pas l'attention, et de nombreuses boucles foreach de la même liste, dans ce cas, vous pourrez appeler GetEnumerator() de nombreuses fois.
InformationsquelleAutor CVertex | 2009-04-05