首页 > 解决方案 > OData 是否允许用户使用 IQueryable 查询 SQL EF 数据库?

问题描述

是否有任何方法可以通过 API 参数查询实际的 EF 数据库?

我们知道 OData Query 允许查询最终结果 API。是否可以使用 IQueryable 从 OData Query Api 层发送简单的 SQL EF 查询?

我们想应用分页,而不是提取所有 1000 条记录,让一些 API 层只查询需要的结果(比如,只查询结果 5-10)等。这可能不是一直都是最佳实践,只需要选项在某些情况下存在。

/api/Product?$skip=5&$top=5

/api/persons?$orderby=name
/api/persons?$select=ID,Name
/api/students?$filter=Name eq ‘Todd’

标签: c#entity-frameworkasp.net-core.net-coreodata

解决方案


参数 $skip 和 $top 确实存在于 OData 中,如果您在 IQueryable 上执行这些参数,它们应该可以工作。

例如,调用以下 URL:

http://localhost:24367/TestData?$skip=5&$top=5

将跳过前 5 条记录并获取接下来的 5 条记录。

您的 MVC 操作(如果您是 MVC)将如下所示:

[EnableQuery]
public IHttpActionResult Get()  
{  
    var result = GetData().AsQueryable();  
    return Ok(result);  
}  

更多信息可以在这篇优秀的帖子中找到: https ://www.c-sharpcorner.com/article/paging-with-odata-and-Asp-Net-web-api/


推荐阅读