我应该从域服务中过滤我的 IQueryable 结果吗?
例如...我的 3 个门户(网站)访问同一个域服务层,根据用户类型,我调用特定的存储库方法并返回结果,
当前存储库层:
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; 这没有委托给存储库层。