2015-04-01 90 views
1

我在使用Odata和PageResult結合時遇到了困難。 我得到正確的結果,如果我設置[5]如果我設置[頁面大小爲5]Composite c1 Odata Pageresult

但沒有nextlink,我期望,所以我可以得到第2頁的下一個結果爲例。

複合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 $跳過= 5

變量過濾了列表的19個圖像項目。和filtered.Count()也返回19。

有人有建議甚至是解決方案嗎? 複合材料C1安裝是一個簡單的骨頭,沒有額外的處理程序。 Composite C1 4.2 Update 1,Build no。 4.2.5287.17495

回答

0

嘗試除去[Queryable]屬性,它會阻止正確呈現PageResult響應。

+0

謝謝你的建議,但它沒有解決。 我用現在的代碼更新了問題。 我設置了20硬編碼,只是爲了確保分頁應該工作。 – 2015-04-01 20:54:45

相關問題