我有一個產品odata控制器和一個產品類別odata控制器。
它們都使用實體框架實體並且具有用於odata擴展的導航方法。
這兩個展開工作正常。
現在我在實體框架中添加了一個存儲過程來處理從數據庫返回的數據,並仍然返回一個「Product」記錄。
我將實體存儲過程函數返回類型設置爲「Product」,並在Product odata控制器中創建一個新函數來調用實體函數並返回「Product」。
我可以從url調用該函數,並且它正確地返回一個Product實體/ json。
現在我需要調用網址上的展開來獲得「產品類別」實體,但是失敗。Webapi odata使用實體框架功能展開
我看過這篇文章,但這是基於非實體模型。我的實體都是正確的,運行良好。
http://beyondtheduck.com/projecting-and-the-odata-expand-query-option-possible-at-last-kinda/
你是在說, 「EnableQuery」 正確確實與拓展工作。我應該更好地解釋我的問題。在使用StoredProcedure和分頁時,「EnableQuery」似乎不起作用。就像「PageResult」一樣...... – goroth 2014-10-20 19:14:47
@goroth爲什麼要按照您所描述的那樣使用PageResult,返回值將是單個「產品」記錄。但是,如果您要返回產品集合以及分頁,則可以使用「[EnableQuery(PageSize = 10)]」的返回類型作爲「IQueryable」來執行此操作。 –
2014-10-21 11:21:43
關鍵詞是「StoredProcedure」。由於存儲過程將始終返回所有記錄,因此我認爲必須先使用「PageResults」來獲取「總計數」,然後在返回結果中設置「take/skip」。 – goroth 2014-10-21 12:48:27