c#DbContext需要20秒

时间:2013-03-13 12:16:41

标签: c# entity-framework dbcontext

当我启动时可以控制程序并初始化我的DbContext类,我的程序每次等待20秒。

没有dbContext类都可以正常工作。 谁知道为什么?

这里是someCode

public class CobraDataBaseContext : DbContext
{

    public DbSet<Material> Materials { get; set; }
    public DbSet<Site> Sites { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        // Ein Workplace hat eine Optinale Maschine ABER eine Maschine muss immer einem Workplace 
        // zugeordnet sein.
        modelBuilder.Entity<WorkPlace>().HasOptional(m => m.machine).WithRequired(wp => wp.workPlace);

        // one material has optinal specification
        modelBuilder.Entity<Material>().HasOptional(n => n.specification).WithMany();
    }
}

服务类

public Site getSite(string siteName)         {             var site = dbContext.Sites.FirstOrDefault(s =&gt; s.name.Equals(siteName));

        foreach (var wp in site.workPlaces)
        {
            if (wp.numberOfWorkers != null)
            {
                double count = wp.numberOfWorkers.value.Value;
            }
        }


        return dbContext.Sites.FirstOrDefault(s => s.name.Equals(siteName));
    }

2 个答案:

答案 0 :(得分:2)

The following excerpt explains what is going on

  

模型缓存

     

发现模型,处理数据注释和应用流畅的API配置需要花费一些成本。为了避免每次实例化派生的DbContext时产生此成本,在第一次初始化期间缓存模型。每次在同一AppDomain中构造相同的派生上下文时,都会重新使用缓存的模型。

答案 1 :(得分:0)

这可能会对您有所帮助:MSDN: Performance Considerations for Entity Framework 5

特别是,我发现如果您拥有大型模型,预编译视图会有所帮助。