ASP.net MVC 4(web api)OData配置

xan*_*ndy 6 odata asp.net-web-api

一直在玩(单页应用程序)BigShelf样本.我发现非常有趣的是GetBooksForSearch方法(/ API/BigShelf/GetBooksForSearch),它需要附加的$filter,$inlinecount,$top,$skip用于寻呼和过滤的结果,这是不存在于控制器代码参数:

public IQueryable<Book> GetBooksForSearch
    (string profileIds, Sort sort, bool sortAscending)
Run Code Online (Sandbox Code Playgroud)

我找不到任何关于Controller如何翻译和过滤结果的文档,更重要的是,如何配置这样的行为(例如,限制最大结果),任何人都有线索?

- 更新 -

发现MVC Web API正在发挥作用.但是我们如何配置呢?

Cod*_*ark 14

似乎已删除ResultLimitAttribute.看到这个提交

它被卷入[Queryable]属性的一个特性,现在OData支持需要该特性.见这里的讨论

现在正确使用

[Queryable(ResultLimit = 10)]

[UPDATE]

从RTM开始,Queryable的ResultLimit功能已被删除.此外,[可查询]已移至其自己的预览包.请参见博客帖子的更多信息和这个职位上的新使用说明.

[更新2 11-16-12] 随着ASP.Net 2012秋季更新预览,事情再次更新.[Queryable]属性的ResultLimit属性已添加回OData包.

请参阅此处的文章,了解一些更改.

是更新的Nuget包.在撰写本文时,它是一个PREVIEW包.


mar*_*ind 11

有一个动作过滤器属性ResultLimitAttribute,您可以在任何动作方法上使用该属性,该方法返回IQueryable<T>甚至IEnumerable<T>限制返回的数据量.

[ResultLimit(100)]
public IQueryable<Product> Get() {
    // ...
}
Run Code Online (Sandbox Code Playgroud)