-3

コンソール プログラムを起動して 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(string 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));
    }
4

2 に答える 2

2

次の抜粋は、何が起こっているかを説明しています

モデルキャッシング

モデルの検出、データアノテーションの処理、および流暢なAPI構成の適用にはいくらかのコストがかかります。派生したDbContextがインスタンス化されるたびにこのコストが発生しないようにするために、モデルは最初の初期化中にキャッシュされます。キャッシュされたモデルは、同じAppDomainで同じ派生コンテキストが構築されるたびに再利用されます。

于 2013-03-13T12:22:28.697 に答える
0

これはあなたを助けるかもしれません:MSDN: Performance Considerations for Entity Framework 5

特に、大きなモデルを使用している場合は、ビューを事前にコンパイルすることが最も役立つことがわかりました。

于 2013-03-13T12:22:19.367 に答える