2010-07-30 40 views
1

如果我有這樣的事情:Linq to Entities是否包含跨通話的工作?

x = from f in first.Include("second") 
    where f.id == 1 
    select f 

y = from s in second 
    where s.first.id == 1 
    select s 

將兩個查詢被髮送到我的數據庫?我意識到我可以設置y = f.second來確保只有一個調用被創建,但我經常想要考慮我的代碼,這樣我就可以執行第二個調用,而不管我是否完成了第一個調用 - 你可以通過f.second的過載令人討厭。

回答

1

假設你枚舉查詢將進行兩個調用。

,但我經常想我的因素代碼,這樣我可以做第二次調用獨立的是否我已經做了第一

你有你爲什麼要保留查詢分開的理由?你寫的兩個查詢是一樣的。您已經在查詢x中檢索到您需要的所有數據。你不需要做第二個查詢,因爲你可以做

x.Seconds; 
//or if there is more than one result in x 
x.SelectMany(y=>y.Seconds); 
+1

你是對的先生。我誤打了我的東西。但是,你的答案更好,所以我要刪除我的。 – Josh 2010-07-30 19:07:48

+0

好吧,我可能有兩個方法:GetFirstStuff()和GetSecondStuff()。我不想在GetSecondStuff中寫入兩條路徑,這取決於GetFirstStuff是否被調用。這不是世界末日,只是令人討厭。哦,謝謝你的回答。 – Xodarap 2010-07-31 23:26:05