Ravendb 正确构造raven+;带分页的存储库
假设此设置:Ravendb 正确构造raven+;带分页的存储库,ravendb,Ravendb,假设此设置: interface IRepo { IEnumerable<Project> GetAllProjects(); } class RavenRepo : IRepo { IEnumerable<Project> GetAllProjects() { return session.query<Project>(); } } class ApplicationService { IRepo repo; pub
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(...);
}
}
接口IRepo
{
IEnumerable GetAllProjects();
}
RavenRepo类:IRepo
{
IEnumerable GetAllProjects()
{
返回session.query();
}
}
类应用程序服务
{
IRepo回购;
公共IEnumerable GetProjectSordedBySomething()
{
返回repo.GetAllProjects().OrderBy(…);
}
}
这很好,但我想添加分页,一直回到回购协议。如果我只是将其添加到GetAllProjects中,OrderBy将无法工作。我认为有三种选择:
我不喜欢从存储库外部推迟执行的想法,但我想选项2是除此之外最有用的?此外,这将分页的负担(和责任)放到了服务上,这意味着有人可能会错过使用分页的要求。正如您所发现的,这是一个非常糟糕的主意。 有关更多详细信息,请参见此处:
但是,一般来说,不要将存储库与RavenDB一起使用。这是一篇伟大而糟糕的博客文章。很好,因为这种货物崇拜的趋势已经让我很恼火,并把我拖了一段时间。糟透了,因为现在我不得不把我们以前的所有项目都推向CQR或类似的目标。。。