ドメインサービスからのIQueryableの結果をフィルタリングする必要がありますか?
たとえば...私の3つのポータル(Webサイト)は、ユーザーのタイプに応じて同じドメインサービスレイヤーにアクセスします。特定のリポジトリメソッドを呼び出して、結果を返します。
現在のリポジトリレイヤー:
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を含むセッションがあるので、回答するときはそのことに注意してください。
2番目の質問:ドメインサービスレイヤーでフィルタリングを行う必要がありますか?このレイヤーは、エンティティを修正できる唯一のレイヤーです。つまり、Product.Price == 25.00; これはリポジトリ層に委任されません。