2009-02-14 76 views
1

我有一個Windows服務通過ADO.NET數據服務公開三個數據源。這些數據源是隻讀的XML文件,加載到XDocument中,然後通過.AsQueryable()公開。源包含帶整數ID的字段,這些字段可以被認爲是數據源之間的「外鍵」。LINQ連接和ADO.NET數據服務

我的客戶端使用此數據服務,並可以使用LINQ單獨查詢三個數據源。有使用數據的數據綁定控件。

在客戶端,我想在這三個數據源之間進行SQL風格的連接。我原本是通過LINQ加入的,但發現ADO.NET Data Services不支持這一點。

我的第二種方法是將數據作爲單獨的表獲取,然後執行連接客戶端 - 儘管這不是最優的。但是,由於LINQ在數據被枚舉時懶惰地提取數據並構造查詢,因此最終會導致與第一種方法相同的問題。

所以,我現在認爲最好的方法是在服務器端加入我所有的數據,並使用一個新的對象提供IQueryable接口。

這真的是最好的方法嗎?看起來...... un。。

+0

除非你對工作感到無聊,否則我會繼續前進。如果不整潔就是你所擔心的,並且不重要,那麼以後再擔心。 – leppie 2009-02-14 19:13:31

回答

2

您可以使用第二種方法,並使用ToList()強制早期加載,然後使用LINQ to Objects在2個列表上進行連接。

幾乎不是最佳的,你會失去可組合性,但它會讓你圍繞懶惰的加載問題。

+0

那會做。謝謝。 – 2009-02-14 23:13:20