4

私のアプリケーションは、DbContext と約 100 のエンティティ クラスで EF5 を使用しています。最初のコンテキスト インスタンスの初期化には約 5 秒、最初のクエリには約 1 秒かかります。プリコンパイルされたクエリを作成した後、必要な時間は 4.5 秒と 0.1 秒に短縮されました。

というわけで、ビュー生成は特に最初のクエリを高速化するようです。しかし、最初のコンテキストの初期化は、プリコンパイルされたクエリからわずかな利益しか得られないようです。

私の理解では、EF は実行時にエンティティ クラスから EDMX モデルを作成します。たぶん、これが起動時の遅延を引き起こします。起動世代からコンパイル時まで、できるだけ移動したいと思います。プログラムが各起動時に同じように計算する必要があるのはなぜですか?

生成されたデータが接続文字列などに依存している場合、個々の依存関係ごとに一度保存したいと思います。生成されたデータを含むプロパティがあり、ファイルにシリアル化して再度ロードして起動の遅延を抑えることができるのではないでしょうか?

データベース移行テーブルを調べると、エンコードおよび圧縮された EDMX が含まれています。これは、スキーマの変更を判断するために現在のものと比較されるようです。これをアーカイブするために、EF はすべての起動時に EDMX を生成する必要があります。何度も何度も.....これは、スピードアップのためにキャッシュするのが好きです。

実行時に、アプリケーションがデータベース スキーマが最新であると信頼できる場合、EF は単にこのデータベースに格納された EDMX を使用する必要があると思いますか?

4

1 に答える 1