簡體   English   中英

實體框架緩慢的第一次調用IRepository DbContext

[英]Entity Framework Slow First Call IRepository DbContext

我們將實體框架6.1.1與下面的DbContext和EntityTypeConfiguration一起使用,以將大約400個實體映射到我們的DbContext。 然后,我們創建DbContext的實例,並使用它為我們在服務層中使用的每個IRepository實體創建對象集。 我遇到的問題是我找不到解決方案,這是在使用Ants Profiler時,第一次調用數據庫大約需要18秒。

我已經研究過生成視圖,但是當DbContext不包含對實體的硬編碼DbSet集合時,我找不到找到該視圖的方法。 有沒有一種方法可以使用我們的模式預先生成視圖,如果可以的話,我們是否會看到性能上的顯着改善?

還是該走上一條不同的道路了,我們是否應該創建較小的DbContext,這些DbContext用於邏輯分離的數據庫特定區域?

  public class Context: DbContext
  {
#pragma warning disable
    Type dummyType_SqlProviderServices = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
#pragma


static Context()
{
  Database.SetInitializer(new ContextatabaseInitializer<Context>());

}

public Context(DbConnection con)
  : base(con, false)
{
}

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    modelBuilder.Configurations.AddFromAssembly(typeof(ZincContext).Assembly);      
    base.OnModelCreating(modelBuilder);
  }
}

public class EntityRepository<T> : IEntityRepository<T> where T : class
{
    protected IDbSet<T> ObjectSet
    {
      get
      {
        if (_objectSet == null)
        {
          _objectSet = this.DbContext.Set<T>();
        }
        return _objectSet;
      }
    }
}

基於實體模型生成視圖是應用程序首次執行查詢時的重大成本。 使用EdmGen.exe實用工具將視圖預先生成為Visual Basic或C#代碼文件,可以在設計過程中將其添加到項目中。 您還可以使用“文本模板轉換工具包”來生成預編譯的視圖。 預生成的視圖在運行時進行驗證,以確保它們與指定實體模型的當前版本一致。 有關更多信息,請參見如何:

預先生成視圖以提高查詢性能(實體框架)

使用Entity Framework 4中的預編譯/預生成的視圖隔離性能

可視化STUDIO代碼庫中的實體框架代碼第一視圖生成模板

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM