Sé que esto podría ser opinión, pero estoy buscando las mejores prácticas.¿Debo devolver IEnumerable <T> o IQueryable <T> de mi DAL?
Según entiendo, IQueryable<T>
implementa IEnumerable<T>
, así que en mi DAL, que actualmente tienen firmas de métodos como la siguiente:
IEnumerable<Product> GetProducts();
IEnumerable<Product> GetProductsByCategory(int cateogoryId);
Product GetProduct(int productId);
debo utilizar IQueryable<T>
aquí?
¿Cuáles son los pros y los contras de ambos enfoques?
Nota que estoy planeando sobre el uso del patrón de depósito, así que tendrá una clase de esta manera:
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 mi IEnumerable<T>
-IQueryable<T>
? ¿Qué ventajas/desventajas hay para uno u otro?
Bien dicho. Breve conciso, con viñetas. – Armstrongest
Derecho encendido. Siempre he agrupado a IList e IEnumerable en el mismo cubo, pero me gusta más esta idea. – scottm