¿Debería estar filtrando mis resultados IQueryable del Servicio de dominio?MVC - Domain Service se encarga de filtrar o ¿Capa de repositorio?
Por ejemplo ... Mis 3 portales (sitios web) acceder a la misma capa de servicios de dominio, dependiendo del tipo de usuario que es, que yo llamo un método repositorio específico y devolver el resultado,
actual capa de repositorio:
IQueryable<Products> GetAllProductsForCrazyUserNow(CrazyUser id);
Products GetAProductForCrazyUserNow(CrazyUser id,product id);
IQueryable<Products> GetProductsForNiceUserNow(NiceUser id);
Products GetProductsForNiceUserNow(NiceUser id,product id);
¿sería mejor simplemente hacer esto en la capa de repositorio:
IQueryable<Products> GetAllProducts();
Products GetAProduct(product id);
Luego, dentro del Servicio de dominio, lo hago sencilla el filtro es decir
var Niceman = IQueryable<Products> GetAllProducts().Where(u=> u.Name == "Nice");
NOTA: Tengo una sesión de solo lectura y una sesión que incluye CRUD dentro de la capa de repositorio, así que tenga esto en cuenta al responder.
Segunda pregunta: ¿Debo hacer algún tipo de filtrado en la capa de servicio del dominio? Esta misma capa es la única capa que puede modificar la Entidad, es decir, Product.Price == 25.00; Esto no se delega en la capa de repositorio.
Podríamos argurar que la capa del repositorio es para la persistencia y la recuperación de los conjuntos de datos básicos, entonces deberían refinarse en el Servicio de dominio. Eso es si negamos los Prod. Almacenados ... Me alegro de no tener que lidiar con eso porque estoy usando LinqToSql – Haroon