C# $INLINECUNT未使用ApplyTo在ApiController上工作
我试图在标准Web API 2.2C# $INLINECUNT未使用ApplyTo在ApiController上工作,c#,odata,asp.net-web-api,asp.net-web-api2,C#,Odata,Asp.net Web Api,Asp.net Web Api2,我试图在标准Web API 2.2ApicController中使用OData过滤和分页功能。为此,我必须重写请求URL以符合ODataV4标准。我的控制器如下所示: public GridPage Get([FromUri] GridSearchCriteria criteria) { Request.RequestUri = ... // convert querystring to OData v4 var context = new ODataQueryContext(M
ApicController
中使用OData过滤和分页功能。为此,我必须重写请求URL以符合ODataV4标准。我的控制器如下所示:
public GridPage Get([FromUri] GridSearchCriteria criteria)
{
Request.RequestUri = ... // convert querystring to OData v4
var context = new ODataQueryContext(MyEdmModel.Instance, typeof(Delivery), null);
ODataQueryOptions<Delivery> options = new ODataQueryOptions<Delivery>(context, Request);
IQueryable<Delivery> deliveries = ... // use EF to load deliveries from DB
var result = (IQueryable<Delivery>)options.ApplyTo(deliveries); // BTW, I wonder why there is no generic overload of ApplyTo?
// fill and return a GridPage
...
}
不幸的是,totalCount
无论我尝试什么,都始终保持为空。我还尝试使用:
object totalCount;
Request.Properties.TryGetValue("System.Web.OData.TotalCount", out totalCount);
但是没有运气。查看请求
属性可以发现System.Web.OData.properties
下有一个条目,但其所有属性都未初始化(Model
为null,NextLink
为null,TotalCount
为null,等等)
有人知道为什么这不起作用吗?顺便说一句,我使用的是
Microsoft.AspNet.OData
v5.6。我必须指定$count=true
而不是$inlinecount=allpages
。据我所知,这是一个突破性的变化。我必须指定$count=true
而不是$inlinecount=allpages
。据了解,这是一个突破性的变化。这也适用于ODataController。这是如此糟糕的记录-谢谢!谢谢当我迁移到4.0时,这帮助了我进行了其他规范更改:这是针对OData V4的,它的inlinecount被替换为count,而不是2或3,我在ApicController上有相同的问题,inlinecount=allpages不起作用,brign normal Result这在ODataController上也起作用。这是如此糟糕的记录-谢谢!谢谢当我迁移到4.0时,这有助于我进行其他规范更改:这是针对OData V4的,它的inlinecount被替换为count,而不是2或3,我在ApiController上有相同的问题,inlinecount=allpages不起作用,brign正常结果
object totalCount;
Request.Properties.TryGetValue("System.Web.OData.TotalCount", out totalCount);