2012-07-24 52 views
0

我有一個WinForm的應用程序和使用EF 4.2。我在EF 4.2中讀到,linq實體查詢是自動編譯的。 當調用查詢我做到以下幾點:實體Framwork使用語境和編譯查詢

using (BVSEntities bvsContext = new BVSEntities(ConnectionString)) 
     { 
      var person = (from sender in bvsContext.T_Absender 
          where sender.Absender_ID == id 
          select sender).First<T_Absender>(); 
      return person; 
     } 

問題: 1)此查詢自動編譯? 2)如果它autocompiled。編譯後的查詢是否被重用,因爲bvsContext在使用後被放置? 3)如果沒有,我怎麼能重複使用,但沒有得到任何併發的問題?

回答

1

是這個查詢自動編譯?

沒有因爲EF 4.2不包括autocompiled查詢。據推測,EF 4.2將包括他們,但之後EF的命名約定已經改變。自動編譯的查詢是.NET 4.5的一部分。 EF 4.2只是EF 4.1的一些修補程序。

編譯後的查詢是否被重用,因爲bvsContext在使用後被放置?

.NET 4.5包含用於自動編譯查詢的內部緩存以重用它們。

+0

這是否意味着如果我更新到4.5 EF我可以使用obove風格和編譯的查詢將被重用? – 2012-07-24 10:56:33

+0

對不起,我誤讀了。所以我必須等待fpr .Net 4.5。謝謝 – 2012-07-24 11:06:43