2013-08-16 154 views
1

我已經多次提到它應該在Entity Framework中使用編譯查詢,因爲它提高了效率,這與在SQL Server中編譯和緩存存儲過程的方式非常相似。哪些版本的實體框架支持編譯查詢?

顯然,有編譯查詢的兩個版本,第一個是CompiledQuery,這在我的理解只有在ObjectContext和自動編譯查詢,與DbContextObjectContext雙方合作的作品。

那麼在哪個版本的EF中編譯查詢工作以及在哪個API上下文中?

回答

5

.NET 4.5是第一個支持自動編譯和緩存的版本。從Compiled Queries文檔:

與.NET Framework 4.5開始,LINQ查詢會自動緩存。但是,您仍然可以在以後的執行中使用編譯後的LINQ查詢來降低此成本,並且編譯後的查詢可能比自動緩存的LINQ查詢更有效。請注意,將Enumerable.Contains運算符應用於內存集合的LINQ to Entities查詢不會自動緩存。還不允許在編譯的LINQ查詢中參數化內存中的集合。

CompiledQuery支持手動編譯的查詢自.NET 3.5 sp1以來就有了。

+1

好的,我明白了,但有沒有一個圖表交叉引用這些LINQ功能的EF版本。例如,EF 4.1 Code First不是主要版本,我會假設與EF 4.0綁定到相同的.NET Framework版本,對吧?但EF 4.1對編譯查詢有不同的支持,因爲這是不同建模方法的第一個版本? –

+0

@KarlAnderson http://msdn.microsoft.com/en-us/data/jj574253.aspx –

+0

謝謝,這是更符合我所尋找的,讚賞。對不起,如果我的問題是模糊或混亂。 –