2016-02-25 42 views
0

我想使我的LinQ語句預編譯語句。ApplicationDbContext中的GetTable:IdentityDbContext <ApplicationUser>

我用這個指南:LinQ opti

我建立這樣的數據庫連接:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection") 
    { 
    } 
    public DbSet<UserType> UserType { get; set; } 
} 

這個靜態類看起來是這樣的:

public static class clsCompiledQuery 
{ 
    //UserType 
    public static Func<ApplicationDbContext, string, IQueryable<UserType>> 
     getUserTypeByCode = CompiledQuery.Compile((ApplicationDbContext db, string UserTypeCode) 
      => from tbUserType in db.GetTable<UserType>() 
       where tbUserType.UserTypeCode == "PAR" 
       select tbUserType); 

} 

db.GetTable()在ApplicationDbContext中不可用

Is there一種從ApplicationDbContext創建GetTable的方法?

這是我的新天地,我在這方面有點迷茫。 這個任務/主題的原因是LinQ很慢,我需要找到更好的性能。

+0

您正在使用哪種版本的EF和.net框架? –

+0

EF 6.1.3,ASP.NET Identity 2.2.1 Witch包是否與.net框架一起引用? – AHJ

+0

.net框架是你的代碼運行的「引擎」。我猜你正在使用4.5或4.6;無論如何它沒關係 - 看看我的回答 –

回答

1

由於您使用的是EF6查詢被自動編譯爲而不管.net framework代碼是否正在運行。

您在問題中提供的鏈接是從2009年開始預編譯查詢的意義。

爲了讓歷史的點點

  • EF6是版本獨立於第一.NET框架

  • EF4和EF5,如果在框架運行可以充分利用預編譯功能4.5+

+0

謝謝..然後,我需要找到其他方法來優化數據訪問..任何建議與EF6? – AHJ

+0

這是一個大問題。我會說看看實體跟蹤行爲 - 你可以關閉它們,如果你得到它們,而不是更新它們。 也有更小的上下文 –

+0

我正在尋找非規範化數據庫的一些半靜態部分。它應該給我更多的表現,但也更復雜。然後我輸出在MVC設置中緩存靜態和半靜態控制器。 Javascript的捆綁和縮小使我的加載速度提高了50%。問題仍然是加載時間,輸出緩存是我的朋友。 – AHJ

相關問題