gpt4 book ai didi

c# - RavenDB 内部集合分页

转载 作者:行者123 更新时间:2023-11-30 12:14:49 26 4
gpt4 key购买 nike

我是 RavenDB 的新手,据我了解,当您请求文档时,您将获得整个文档(除非您使用某种索引等)。

示例场景

以博客文档场景为例,文档如下所示:

public class Blog
{
public string Id { get; set; }
public string AuthorId { get; set; }
public DateTime PublishedUTC { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public Comment[] Comments { get; set; }
}

public class Comment
{
public string Id { get; set; }
public string AuthorId { get; set; }
public DateTime PublishedUTC { get; set; }
public string Content { get; set; }
}

假设我们有一个网页 /blogs/posts/。该页面显示一组分页的博客帖子和每个博客的评论。我了解如何使用 Skip()Take() 方法在博客文档上使用分页。我想将分页逻辑应用于每个博客文档的内部 Comments 集合。

我的问题

  1. 我如何获得一组分页的博客和一组分页的博客他们的评论?

  2. 鉴于分页要求,您是否会更改给定的博客文档场景,以便评论不在博客中文件?

最佳答案

  1. 如果您使用的是 .Skip().Take()要获取博客文章的分页列表,您已经做对了。为了在评论中也获得分页列表,您可以在内存列表中使用相同的方法(然后它将是 linq-to-objects)。所以我建议改变你的Comment[]数组变成 List<Comment> , 那么你就有了这两个 linq 方法。

  2. 如果我更改 post 文档使其不包含评论,我不会这样做,因为分页(没有缺点,请参阅我的第一点),但因为数据库中节省了带宽-要求。我将有 2 个文档,一个包含帖子,另一个包含所有 评论。这样您就不需要在每次要显示帖子列表时加载所有评论,但在您实际需要它们时仍然具有文档数据库优势。使用 RavenDB 也可以很容易地在您的评论项上定义索引,以防您在其他地方(侧边栏左右)需要它们。您可以在 RaccoonBlog 中找到这个实现。 .

关于c# - RavenDB 内部集合分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8829488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com