2013-08-01 81 views
2

我對oData服務比較陌生,我試圖探究oData是否適用於我的項目。oData - 將過濾器應用於SQL查詢

從我遇到的所有示例/演示中,每個演示始終將所有數據加載到存儲庫中,然後將oData過濾器應用於數據。

有沒有辦法不從SQL中加載所有數據(將過濾器應用到oData的SQL),這對於N個進入/秒數的請求顯然是非常低效的?

因此,舉例來說,如果我有一個電影服務:

本地主機:4502/OdataService /電影(55)

上面的例子實際上只是從一個「完整的」設置過濾的電影ID 55 movies.Is有辦法讓這個過濾器發生在SQL級別,而不是首先使用所有電影膨脹內存,然後讓oData過濾它嗎?

任何人都可以引導我在正確的方向嗎?

+1

您是否確定確實如此?只要你沒有枚舉你的IQueryable,然後再從你的控制器操作中返回它,OData查詢應該對db執行就好了。 –

+0

[使用Odata獲取海量數據]可能的重複(http://stackoverflow.com/questions/17974634/using-odata-to-get-huge-amount-of-data) –

+0

我正在嘗試表值函數,但在這種情況下,EF會讀取函數返回的所有內容,並且似乎稍後會應用OData過濾器。有沒有辦法避免使用TVF? – BuddhiP

回答

1

我發現做了一個小的POC後,實體框架負責根據請求構建動態查詢。