¿Debo devolver IEnumerable <T> o IQueryable <T> desde mi DAL?
Sé que esto podría ser una opinión, pero estoy buscando las mejores prácticas.
Según entiendo,IQueryable<T>
implementosIEnumerable<T>
, así que en mi DAL, actualmente tengo firmas de métodos como las siguientes:
IEnumerable<Product> GetProducts();
IEnumerable<Product> GetProductsByCategory(int cateogoryId);
Product GetProduct(int productId);
Debería estar usandoIQueryable<T>
¿aquí?
¿Cuáles son los pros y los contras de cualquiera de los enfoques?
Tenga en cuenta que estoy planeando usar el patrón Repository, así que tendré una clase como esta:
public class ProductRepository {
DBDataContext db = new DBDataContext(<!-- connection string -->);
public IEnumerable<Product> GetProductsNew(int daysOld) {
return db.GetProducts()
.Where(p => p.AddedDateTime > DateTime.Now.AddDays(-daysOld ));
}
}
¿Debo cambiar miIEnumerable<T>
aIQueryable<T>
? ¿Qué ventajas / desventajas hay para uno u otro?