2014-02-20 66 views
0

我的代碼是:爲什麼我仍然得到System.NotSupportedException

using(var ctxA = new AEntities()) 
using(var ctxB = new BEntities()) 
{ 
    var listOfA = (from A in AEntities.AEntity select A).ToList(); 
    var listOfB = (from B in BEntities.BEntity 
        where listOfA.Select(A = A.Id)contains(B.Id) 
        select B).ToList(); 
} 

,我發現了錯誤:

The specified LINQ expression contains references to queries that are associated with different contexts. 

然而,因爲「ToList」我已經做了一個取在AEntity這使得第二個查詢只關於其中一個上下文,沒有?

如何分開兩個查詢仍然使用一個列表來查詢其他?

回答

1

嘗試只是IDs存入listOfA

var listOfA = (from A in AEntities.AEntity select A.Id).ToList(); 
var listOfB = (from B in BEntities.BEntity 
       where listOfA.Contains(B.Id) 
       select B).ToList(); 
+0

塞爾曼,這工作。謝謝。但我無法弄清楚爲什麼這個工作,我的第一個嘗試不。你可以解釋嗎?其他問題:我也需要A的實體列表,如何避免在數據庫上做兩個查詢(一個用於整個實體,一個用於ID)? –

0

如果有人想知道,回答我的問題是:

var listOfA = (from A in AEntities.AEntity select A.Id).ToList(); 
List<long> listOfIdsOfA = listOfA.Select(A=>A.id).ToList(); 
var listOfB = (from B in BEntities.BEntity 
      where listOfIdsOfA.Contains(B.Id) 
      select B).ToList(); 

到塞爾曼的答案唯一的區別是標識的列表的創建在第一個查詢之後。這就是爲什麼我也需要整個實體。

相關問題