OData是否允许用户使用IQueryable查询SQL EF数据库?

时间:2019-08-20 07:24:24

标签: c# entity-framework asp.net-core .net-core odata

是否存在通过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’

1 个答案:

答案 0 :(得分:1)

参数$ 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/