gpt4 book ai didi

c# - EF Core Azure Cosmos DB 提供程序与 Cosmos LINQ to SQL 转换

转载 作者:行者123 更新时间:2023-12-03 03:30:51 30 4
gpt4 key购买 nike

我正在尝试通过启用服务器端分页来从 Cosmos DB 获取数据。我有两个选择:

  1. 使用 EF Core Azure Cosmos DB 提供程序

    var query = DbContext.Order.AsQueryable();

  2. 使用 Azure Cosmos LINQ 到 SQL 转换

    var query = container.GetItemLinqQueryable<Order>(allowSynchronousQueryExecution: true);

我将使用 Skip 获取数据和Take

var data = query.Skip(args.Skip).Take(args.Take).ToList();

什么是更好的解决方案?

最佳答案

Entity Framework 提供程序

Cosmos DB 提供程序将协助删除我们在使用 SDK 时必须实现的大量源代码。

该提供商将允许我们使用 Entity Framework 及其所有优势,以及用于持久性的 Cosmos DB。

EF的分页

分页是指分页检索结果,而不是一次检索全部结果;这通常是针对大型结果集完成的,其中显示的用户界面允许用户导航到结果的下一页或上一页,请参阅本文档

Pagination - EF Core | Microsoft Learn

分页 Linq to sql

Azure Cosmos DB 查询提供程序尽力将 LINQ 查询转换为 Azure Cosmos DB SQL 查询。对生成的 IQueryable 对象使用 ToString() 方法来获取从 LINQ 转换的 SQL 查询。

LINQ to SQL translation in Azure Cosmos DB | Microsoft Learn

LINQ Take() 函数将限制获取的项目数量。 Skip() 函数将忽略前 n 项。像这样的东西可能会起作用:

myDataSource.Skip(pageSize * curPage).Take(pageSize)

解决方案:

您可以使用 Cosmonaut,它支持跳接分页,以及。分页方法(pageNum,pageSize)。它通过滚动结果直到到达该页面来实现此目的,但有一些方法可以提高性能。

#有关分页和分页建议的更多信息可以在 Nick 发布的此处找到

Elfocrash/Cosmonaut: 🌐 A supercharged Azure CosmosDB .NET SDK with ORM support (github.com)

关于c# - EF Core Azure Cosmos DB 提供程序与 Cosmos LINQ to SQL 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74789458/

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