我們使用ASP.Net Webapi與OData和Dapper作爲ORM。對於GET請求,我們分別使用options參數對象的filter參數爲Dapper查詢構建SQL字符串。這很適合列eq值等WebApi與Odata-V4和Dapper - Serverside過濾
但現在我想做一些服務器端分頁。這意味着我用兩個過濾器($ top和$ skip)發出請求。例如。 「https://api.server.com/Orders?$跳過= 100 & $頂部= 50。短小精悍,使正確的請求到數據庫,我得到一個包含50個條目從短小精悍的響應結果。
然後我把這個結果到的WebAPI的return語句控制器和的WebAPI似乎做自己的過濾,所以它執行從50由此導致0項跳過100。
有沒有人有同樣的問題,並找到了一種方法,以防止濾波的WebAPI但是將篩選委託給ORM?編寫ApiControllers而不是ODataControllers是無可替代的,因爲我非常喜歡使用odata語法進行篩選。感謝您的回答!
希望能看到你是如何使用option參數爲Dapper構建SQL字符串。 –
您可以從ODataQueryOptions.Filter.FilterClause.Expression獲取頂級SingleValueNode,這可以作爲樹提取。最簡單的方法是用調試器查看它。 – Hejo