假设这个设置:
interface IRepo
{
IEnumerable<Project> GetAllProjects();
}
class RavenRepo : IRepo
{
IEnumerable<Project> GetAllProjects()
{
return session.query<Project>();
}
}
class ApplicationService
{
IRepo repo;
public IEnumerable<Project> GetProjectsOrderedBySomething()
{
return repo.GetAllProjects().OrderBy(...);
}
}
这很好用,但我想添加分页,一直回到Repo。如果我只是将它添加到GetAllProjects,OrderBy将无法正常工作。我看到三个选项:
我不喜欢从存储库外推迟执行的想法,但我认为选项2除此之外最有用吗?此外,这会给服务带来分页的负担(和责任),这意味着有人可能会错过使用分页的要求。
答案 0 :(得分:1)
正如您所知,这是一个非常糟糕的主意。 有关详情,请参阅此处:http://www.wekeroad.com/2014/03/04/repositories-and-unitofwork-are-not-a-good-idea/
但是,一般情况下,不要将存储库与RavenDB一起使用。