我有一個返回結果集的查詢。我想對結果集應用過濾和排序。 有人可以幫助我瞭解,如果我在LINQ中使用查詢(我正在使用EF 4.0),我是否能夠獲得延遲的executuin,以便當我在實體模型中應用過濾/排序時,執行只發生一次)查詢在LINQ to SQL中使用SP時的執行
在此先感謝!
問候, Bhavik
我有一個返回結果集的查詢。我想對結果集應用過濾和排序。 有人可以幫助我瞭解,如果我在LINQ中使用查詢(我正在使用EF 4.0),我是否能夠獲得延遲的executuin,以便當我在實體模型中應用過濾/排序時,執行只發生一次)查詢在LINQ to SQL中使用SP時的執行
在此先感謝!
問候, Bhavik
如果查詢不帶參數,那麼是的,因爲您可以創建一個調用該sproc的視圖,在您的模型中公開視圖,然後查詢它。
如果它需要參數,那麼如果你需要服務器端完成排序/過濾器,那麼我認爲你必須添加一個包裝器sproc(或修改現有的)來傳入排序和過濾器來執行(基本上,手動,但至少在服務器端)。
或者,您可以編寫SQL做服務器端(存儲過程結果到臨時表中,然後從該臨時表中手動選擇和應用過濾,仍然),然後ExecuteStoreQuery
不,你不能推遲LINQ過濾SQL中的存儲過程的執行。存儲過程將首先執行,結果集將被返回,然後可以將其轉換爲對象類型的列表,一旦完成,您可以使用Linq進行過濾。 您可以輕鬆地投的結果集使用context.Translate <>
看一看這些鏈接的對象列表:
中當然,查詢(在你的代碼中)在你將它轉換爲列表之前不會被評估,所以你可以連接你想要的所有過濾到你的資源ultset然後調用ToList()來獲得結果。
謝謝!它幫助我理解得非常好。 – whihathac 2012-01-16 06:20:09
你調用存儲過程? – 2012-01-13 09:25:48
從頭開始 - 是的。另外說你在EF中使用LINQ to SQL是不正確的。當你查詢ObjectContext時,你正在使用LINQ to Entities。請添加代碼來澄清問題。 – 2012-01-13 09:31:50
謝謝@anatoliiG糾正。詹姆斯的答案解決了我的問題。感謝您的幫助 – whihathac 2012-01-16 06:21:16