我正在尝试使用asp.net mvc应用程序中的存储库和服务层实现N层架构。 Service对象可以拥有多个存储库,以使用相同的工作单元收集所需的所有数据。 控制器只调用Service对象,对存储库一无所知。
存储库示例:
public class UsersRepository : IUsersRepository
{
public IEnumerable<User> GetUsers(UsersQuery query)
{
...
}
}
UsersQuery对象包含了几个用于查询用户的选项,例如:
public class UsersQuery
{
public bool IncludeDeleted { get; set; }
public Expression<Func<User, object>> OrderBy { get; set; }
//Ans so on...
}
我应该如何将动态OrderBy子句(和其他选项)传递给我的存储库?当然,可以通过服务传递Query对象,但在我看来,这不是真正的方式,因为产生开销并违反DRY原则。
有什么建议吗?提前谢谢。