我需要过滤来自域服务的IQueryable结果吗?
例如...我的三个门户网站都访问同一个域服务层,根据用户类型调用特定的存储库方法并返回结果。
当前的存储库层:
IQueryable<Products> GetAllProductsForCrazyUserNow(CrazyUser id);
Products GetAProductForCrazyUserNow(CrazyUser id,product id);
IQueryable<Products> GetProductsForNiceUserNow(NiceUser id);
Products GetProductsForNiceUserNow(NiceUser id,product id);
最好是在存储库层面完成这个操作:
IQueryable<Products> GetAllProducts();
Products GetAProduct(product id);
然后在域服务中,我只需进行过滤,即:
var Niceman = IQueryable<Products> GetAllProducts().Where(u=> u.Name == "Nice");
注意:我有一个只读会话和一个包含仓库层CRUD操作的会话,请在回答时牢记这一点。
第二个问题:我是否应该在领域服务层进行任何过滤?这个层级是唯一可以修改实体的层级,比如 Product.Price == 25.00;这不会被委托给仓库层。