簡體   English   中英

使用linq連接來自不同服務器的兩個表

[英]Joining two tables from different servers using linq

我試圖將來自不同服務器的兩個表聯接起來,但是它總是拋出此異常:

此方法支持LINQ to Entities基礎結構,不能直接在您的代碼中使用。

這是我的查詢:

 var myList = (from myTableA in _dbProvider.ContextOne.TableA
               join myTableB in _dbProvider.ContextOne.TableB on myTableA.ProductId equals myTableB.Oid
               join myTableC in _dbProvider.ContextTwo.TableC on myTableB.Id equals myTableC.ProductId
               where 
               select  myTableC.Name).Distinct().ToList();

這是什么意思?知道我找到了另一個解決方案,就是將每個表中的數據分別放入列表中,然后將它們聯接起來,但是在時間上卻很貪婪,還有其他解決方案嗎?

您不能將來自兩個不同服務器的兩個表連接在一起。 絕對不是來自EF。 最好的選擇是只獲取兩個單獨列表中的數據,然后使用Linq將它們連接到對象。

讓我做一個假想的例子:您在一張桌子上有1000,000張發票,每張有大約10項,在另一台服務器上總共有10,000,000張發票明細。 您需要2015年5月4日創建的10張第一張發票的發票及其詳細信息

您向第一個數據庫發送查詢,僅獲取10張發票,提取其id然后使用該id查詢另一台服務器上的約100行。 這僅比進行單個聯接查詢慢大約兩倍。

在某些情況下,這變得不可能(您在兩個表上都具有條件​​),並且需要帶更多的行,但是在簡單的情況下,這是可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM