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

标签 c# azure entity-framework linq azure-cosmosdb

我正在尝试通过启用服务器端分页来从 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/

相关文章:

c# - 如何从基于 Azure 的 MVC 应用程序启用提醒?

typescript - 即使结果代码为 500,Azure 函数成功状态也为 true

Azure:如何更改 BizSpark 订阅上应用服务和应用服务计划的位置

entity-framework - 你如何在 Code First 方法中自动生成 SDF

c# - 使用 CompileAssemblyFromSource 加载自定义程序集

c# - 如何在 Xamarin.IOS 中返回到之前的 ViewController

c# - 是否有为 nullables 设置值的加法赋值运算符的简写?

c# - 获取 WPF 网页浏览器 HTML

c# - 无法让级联删除在 EF 中工作

asp.net-mvc - LINQ 将日期时间转换为字符串