2011-09-30 29 views
3

我想創建一個從多個來源返回數據的OData服務。由於這個原因,我無法將WCF數據服務與任何開箱即用的提供程序一起使用,而且我們真的想要更多地控制數據模型。哪個更容易,編寫一個自定義OData uri解析器或自定義IQueryable提供程序?

我看到我們有兩個選擇,如果我們堅持MS產品堆棧;

  1. 使用WCF與WebGet/WebInvoke模仿OData api,並在內部執行查詢字符串解析和轉換。例如對於我們的數據在Sql數據庫中的情況,我們必須將$ filter子句轉換爲SQL where子句才能構建我們的查詢。請注意,這裏我們不能使用任何類型的ORM,因爲我們的數據模型是動態的,並且我們沒有任何可以使用ORM填充的CLR實體類。

  2. 我們將WCF數據服務與自定義提供程序一起使用,這要求我們爲資源集傳遞一個IQueryable,這使我們無論是執行Select * FROM Table並將Linq用於對象,還是實現我們自己的IQueryable提供程序支持OData所需的表達式。 WCF數據服務是否會接受IQuerable?

哪個會最容易實現?我們大多隻想支持OData規範的$過濾器功能,$ expand和$ select可以稍後提供。

放棄WCF數據服務似乎是一種遺憾,如果它可以提供經過解析的OData查詢,然後您可以自己轉換爲Linq查詢,而不是期待您的數據源具有IQueryable提供程序,那將是更可取的。

回答

相關問題