web api和odata性能:在数据库级别执行查询

时间:2017-05-11 12:19:19

标签: c# asp.net-web-api odata

我正在使用oData作为web api项目。这是我的代码:

[HttpGet]        
[EnableQuery]
[Route("sessions")]
public IQueryable<Session> Get()
{
    var sessions = this.sessionRepository.GetAllSessions();
    return sessions.AsQueryable();        
}

public class Session
{
    public long Id {get;set;}

    public string Name {get;set;}
}

这很好用:

当我像这个mydomain / api / sessions一样调用api时,我会得到所有的会话 当我像这样调用api mydomain / api / sessions?$ filter = Name eq&#39; session test&#39;时,我只得到名称等于&#39; session test&#39;。< / p>

此代码的问题在于,无论用户执行的请求(没有过滤器,过滤器,顶部或其他任何内容),第一个&#34;选择*&#34;执行 在db中,然后使用oData的QueryableAttribute,对从第一个大请求获得的结果执行过滤器&#34; select *&#34;。 我的问题如下:是否可以直接在数据库中执行用户给出的查询,而不是先执行select *,然后对此结果执行过滤。

提前感谢您的帮助。

0 个答案:

没有答案