asp.net mvc アプリケーションでリポジトリとサービス レイヤーを使用して N 層アーキテクチャを実装しようとしています。Service オブジェクトは複数のリポジトリを所有して、同じ作業単位を使用して必要なすべてのデータを収集できます。コントローラーは Service オブジェクトのみを呼び出し、リポジトリについては何も知りません。
リポジトリの例:
public class UsersRepository : IUsersRepository
{
public IEnumerable<User> GetUsers(UsersQuery query)
{
...
}
}
UsersQuery オブジェクトは、Users をクエリするためのいくつかのオプションをカプセル化しています。
public class UsersQuery
{
public bool IncludeDeleted { get; set; }
public Expression<Func<User, object>> OrderBy { get; set; }
//Ans so on...
}
たとえば、動的な OrderBy 句 (およびその他のオプション) をリポジトリに渡すにはどうすればよいですか? もちろん、サービスを介して Query オブジェクトを渡すだけでも可能ですが、オーバーヘッドが発生し、DRY の原則に違反しているため、本当の方法ではないように思えます。
助言がありますか?前もって感謝します。