在 .NET Web API 中使用分页查询属性

本文关键字:分页 查询 属性 NET Web API | 更新日期: 2023-09-27 17:57:23

我正在尝试为 sql 数据库中的表值函数构建一个 OData 端点。我必须启用分页,以便页面大小值取自 web.config 文件。

我想我必须扩展 EnableQuery 属性才能执行此操作,例如:

public class EnablePagedQueryAttribute : EnableQueryAttribute
{
    public EnablePagedQueryAttribute()
    {
        int myPageSizeFromWebConfig = 0;
        // Get value from web.config as you want:
        if (int.TryParse(ConfigurationManager.AppSettings["myPageSize"], out myPageSizeFromWebConfig))
        {
            this.PageSize = myPageSizeFromWebConfig;
        }
    }
}

我在控制器中使用了上述类,而不是 EnableQuery,我在控制器方法中使用了 EnablePagedQuery,但查询根本不起作用:$top,$select,没有一个工作,

我想这个EnablePagedQuery扩展有问题,因为使用EnableQuery一切都在工作。

另外,我如何检查页面大小是否确实发生了变化

在 .NET Web API 中使用分页查询属性

$select查询将不起作用,因为当您使用 ODataQueryOptions 在控制器中使用方法(以选取查询中的选项)时,不能使用 select,因为它不支持 select。因此,您不得尝试在查询中撰写$select。

此外,要检查页面大小是否已更改,一个简单的选项是将其设置为小值,如 1,2,并检查您的查询响应是否确实发生了变化。