oData-将筛选器应用于SQL查询

oData-将筛选器应用于SQL查询,odata,Odata,我对oData服务比较陌生,我正在尝试探索oData是否适合我的项目 从我遇到的所有示例/演示中,每个演示都会将所有数据加载到存储库中,然后对数据应用oData过滤器 有没有办法不从SQL加载所有数据(将筛选器应用于oData中的SQL),因为对于每秒传入的N个请求来说,这显然是非常低效的 例如,如果我有一个电影服务: 本地主机:4502/OdataService/movies(55) 上面的示例实际上只是从一组“完整”的电影中筛选电影id 55。有没有一种方法可以使此筛选在SQL级别进行,而不

我对oData服务比较陌生,我正在尝试探索oData是否适合我的项目

从我遇到的所有示例/演示中,每个演示都会将所有数据加载到存储库中,然后对数据应用oData过滤器

有没有办法不从SQL加载所有数据(将筛选器应用于oData中的SQL),因为对于每秒传入的N个请求来说,这显然是非常低效的

例如,如果我有一个电影服务:

本地主机:4502/OdataService/movies(55)

上面的示例实际上只是从一组“完整”的电影中筛选电影id 55。有没有一种方法可以使此筛选在SQL级别进行,而不是先对所有电影进行内存膨胀,然后允许oData对其进行筛选


有人能给我指引正确的方向吗?

我在做了一个小POC之后发现Entity framework负责根据请求构建动态查询。

你确定是这样吗?只要在从控制器操作返回IQueryable之前没有枚举它,OData查询就应该对db执行得很好。可能与我正在使用的表值函数重复,但在这种情况下,EF读取该函数返回的所有内容,并在以后应用OData过滤器。使用TVF时有没有避免这种情况的方法?如果您在项目中使用的是
ADO.Net
,而不是
Entity Framework
,该怎么办。在数据库端是否有应用过滤的选项?