我在将Odata与PageResult结合使用时遇到了困难。 如果我设置了[可查询(PageSize = 5)]
,我会得到正确的结果,5项但没有nextlink,我期待,所以我可以得到第2页的下一个结果。
Composite C1使用它自己的XML数据存储区,我认为这是问题的核心。
我为OData V3找到的所有示例(如果您使用http://www.composite.net/Products/Add-ons/All/Composite.AspNet.WebAPI,则会安装该版本) 告诉我只使用[Queryable(PageSize = 5)],它应该开箱即用。 但他们都使用实体框架,我不这样做,我认为这就是它破裂的地方。
这是我的结果,没有nextlink:
<Data>
<ImageItem>
<Id>1eeb46e3-1446-45e8-bab2-03ccb637b2ab</Id>
<Title/>
<SubTitle/>
</ImageItem>
<ImageItem>
<Id>1eeb46e3-1446-45e8-bab2-03ccb637b2ab</Id>
<Title/>
<SubTitle/>
</ImageItem>
<ImageItem>
<Id>1eeb46e3-1446-45e8-bab2-03ccb637b2ab</Id>
<Title/>
<SubTitle/>
</ImageItem>
<ImageItem>
<Id>1eeb46e3-1446-45e8-bab2-03ccb637b2ab</Id>
<Title/>
<SubTitle/>
</ImageItem>
<ImageItem>
<Id>1eeb46e3-1446-45e8-bab2-03ccb637b2ab</Id>
<Title/>
<SubTitle/>
</ImageItem>
</Data>
代码:
public class ImagesController : ApiController
{
public PageResult Get(ODataQueryOptions options)
{
using (var c = new DataConnection())
{
var querySettings = new ODataQuerySettings() { PageSize = 20 };
var filtered = options.ApplyTo(c.Get(), querySettings).Cast().ToList().AsQueryable();
return new PageResult(filtered, Request.GetNextPageLink(), 20);
}
}
}
Request.GetNextPageLink()返回http://xx.local/api/images?$ skip = 5
变量过滤有一个包含19个图像项的列表。和filtered.Count()也返回19。
有人有建议甚至是解决方案吗? 复合C1安装是一个简单的安装,没有额外的处理程序。 复合C1 4.2 Update 1,Build no。 4.2.5287.17495
答案 0 :(得分:0)
尝试删除[Queryable]属性,它会阻止正确呈现PageResult响应。