c# DbContext needs 20seconds

本文关键字:20seconds needs DbContext | 更新日期: 2023-09-27 18:03:37

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

没有dbContext类,一切都可以正常工作。有人知道为什么吗?

这里有些代码

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(字符串siteName({var site=dbContext.Sites.FirstOrDefault(s=>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));
    }

c# DbContext needs 20seconds

以下摘录解释了的情况

模型缓存

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

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

特别是,我发现,如果您有一个大型模型,那么预编译视图最有帮助。