2013-02-01 48 views
0

我已經通過亞歷克斯D.詹姆斯三歲的博客文章作爲閱讀這裏找到:如何通過WCF數據服務公開相關數據?

http://blogs.msdn.com/b/alexj/archive/2010/02/24/creating-a-data-service-provider-part-8-relationships.aspx

它是關於通過WCF數據服務暴露的自定義數據美妙的博客系列。在題爲「關係」的第8篇文章中,他談到如何描述和公開相關數據。正如一位評論者所指出的那樣,這篇文章的問題在於他在記憶中這樣做,但並未解釋如何動態提供相關數據。

以他的例子爲例,我想通過數據庫動態獲取我的「產品」。我怎麼做?

回答

1

您需要編寫自定義的IQueryable實現。 WCF DS服務器將構建一個描述查詢的LINQ查詢(包括所有擴展和對所有屬性的訪問)。通過自定義實現,您可以將此類查詢轉換爲任何您想要的。或者您可以覆蓋查詢評估(GetEnumerator和枚舉器執行)以從某處檢索相關數據。

請注意,這絕對不是一件小事。我寫了一系列有關LINQ表達式樹的博客文章,這些樹都是生成的,每個部分的意思是什麼。您需要在代碼中至少部分識別這些屬性以實現相關屬性的延遲加載。 http://blogs.msdn.com/b/vitek/archive/2010/02/25/data-services-expressions-part-1-intro.aspx

+0

謝謝卡拉斯先生,這是你在其他一些論壇上的帖子,這讓我轉向了詹姆斯先生的帖子。我有一半擔心這些帖子可能會過時。 –

+0

我現在已經閱讀了前四篇文章,我不認爲這是我需要的。我沒有提到的是,我的查詢根將是一個先前構造的LInQ到EF。在這種情況下,我是否仍然需要創建自己的IQueryable或者這樣做?此外,在重讀詹姆斯先生的帖子之後,我想我錯過了關於關係如何運作的一些不太清楚的事情。 AssociationSet是否告訴WCF數據服務爲相關類型獲取不同的查詢根?如果是這樣,這對我來說都是有意義的。 –

+0

嗨,它再次。我完成了你的博客系列,這是我一直在尋找的最後一個博客。感謝您寫這篇文章。 –