2013-04-15 22 views
2

我经过这里发现了以下的答案工作:Web API OData Inlinecount not working“不能支持查询”控制器错误

这里是我的控制器,与被服务的一些虚拟的数据。

[Queryable] 
public class ValuesController : ApiController 
{ 
    // GET api/values 
    public PageResult<Category> Get(ODataQueryOptions<Category> queryOptions) 
    { 
     var returnValue = new List<Category>() 
     { 
      new Category() { Id = 1, Name= "Category 1"}, 
      new Category() { Id = 2, Name= "Category 2"}, 
      new Category() { Id = 3, Name= "Category 3"}, 
     }; 

     IQueryable results = queryOptions.ApplyTo(returnValue.AsQueryable()); 

     return new PageResult<Category>(results as IEnumerable<Category>, 
      Request.GetNextPageLink(), Request.GetInlineCount()); 
    } 
} 

我收到以下错误,当我尝试做通过提琴手一个GET:

“的行动控制器‘价值观’,‘获取’返回类型为“System.Web.Http.OData .PageResult`1 [[ODataTest_Solution.DTO.Category,ODataTest Solution,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]'不支持查询。确保返回内容的类型是IEnumerable,IQueryable或通用任何一个界面的形式。“

如果我改变它返回一个IQueryable的方法,它显然工作得很好。

任何想法我可能做错了什么?

回答

6

我试过你的ValuesController,它工作得很好。

您的问题可能是您为此操作添加了[Queryable]属性。如果您使用ODataQueryOptions,则无需使用[Queryable],因为您正在应用查询而不需要操作筛选器。

+0

就是这样。更改了代码示例,以便现在包含属性。 – Schandlich

相关问题