Odata:查询参数' $ count'不受支持

时间:2016-04-05 14:45:18

标签: json kendo-ui odata

服务器:使用标准VS 2015生成器生成的Odata控制器。

// GET: odata/MyEntities
[EnableQuery(AllowedQueryOptions = AllowedQueryOptions.All)]
public IQueryable<Models.Odata. MyEntity> GetMyEntities()
{
  return db.MyEntities;
}

客户:KendoUI

var ds = new kendo.data.HierarchicalDataSource({
  type: "odata-v4",
  transport: {
    read: {
      url: "odata/EndPoints",
      dataType: "json"
    }
  },
  schema: {
            model: {
                id: "Id",
            }
        }
  });

请求:

http://localhost:44444/odata/MyEntities?$format=json - 返回预期的结果, 但

http://localhost:44444/odata/MyEntities?$format=json&$count=true - 产生错误:

{
  "odata.error":{
    "code":"","message":{
      "lang":"en-US","value":"The query parameter '$count' is not supported."
    }
  }
}

我在AppStart中使用了标准设置。它是什么?

2 个答案:

答案 0 :(得分:1)

尝试在控制器中使用Microsoft.AspNet.OData命名空间而不是System.Web.Http.OData。

答案 1 :(得分:0)

OData版本3有一个名为$inlinecount的查询选项,而不是$count。您可能会将查询选项与/$count路径段和版本 4 中的$count查询选项混淆。

请求集合中的实体总数以及实体本身:

GET http://localhost:44444/odata/MyEntities?$format=json&$inlinecount=allpages

仅请求实体集合的计数:

GET http://localhost:44444/odata/MyEntities/$count?$format=json

OData Version 3.0 Core Protocol,第10.2.3.6和10.2.5节。