我正在尝试使用 asp.net mvc 应用程序中的存储库和服务层来实现 N 层架构。一个服务对象可以拥有多个存储库,以使用相同的工作单元收集它需要的所有数据。控制器只调用服务对象,对存储库一无所知。
存储库示例:
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 原则。
有什么建议么?提前致谢。