コードファースト戦略でEF6 rc1を使用しています。コンパイルされたビューを使用せずに問題があります。 exeアプリケーションをコンパイルして実行すると最初のクエリを実行するのに15秒(私はまだ事前生成されたビューで作業しているので、大丈夫です)。私は最初のクエリ実行する前に、それはほとんど2分かかり、まったく同じアプリケーションをデバッグするためのVisual Studio 2013プレビューを使用している場合でも:EF6/Code First:最初のクエリでは、最初のクエリではスローが遅いですが、デバッグ時にのみ
Dim Context = New MyEntities()
Dim Query = From I in Context.Itens '' <--- The debug takes 2 minutes in here
Dim Item = Query.FirstOrDefault()
をこの余分な時間を削除する方法はありますか?私はここで何か間違っていますか?
Ps .:コンテキスト自体は複雑ではなく、200以上のテーブルで完全です。
編集:デバッグ時間中に、EFが事前生成されたものを無視してビューを生成しているように見えることが判明しました。 EFからソースコードを使用して 私は、プロパティことを発見:時間が消費されている場所
IQueryProvider IQueryable.Provider
{
get
{
return _provider ?? (_provider = new DbQueryProvider(
GetInternalQueryWithCheck("IQueryable.Provider").InternalContext,
GetInternalQueryWithCheck("IQueryable.Provider").ObjectQueryProvider));
}
}
です。しかし、これはデバッグで時間がかかるだけなので奇妙です。私はここに何かを逃していますか
編集:質問に関連する詳細情報が見つかりました: Process Monitor(Sysinternals社)を使用すると、時間が掛かっている「desenv.exe」プロセスが見つかりました。より具体的には、「スレッド出口」を使用して時間を消費することです。スレッド出口スタックを36回繰り返します。私はこの情報が非常に有用かどうかはわかりませんが、スタックで '.cvs'を保存しました。ここに彼の体があります:[...](編集: '.cvs'本体を削除しました。誰かが実際に役に立つと思っているとコメントしても、混乱しすぎて大きすぎます)
編集:VS2013 UltimateとEntity Framework 6 RTMがインストールされました。 Entity Framework Power Tools Beta 4をインストールし、それを使用してビューを生成しました。何も変更されていません...もし私がexeを実行すると、20秒かかります。
編集:エラーをシミュレートする小さなプロジェクトを作成しました:http://sdrv.ms/16pH9Vm 環境内でプロジェクトを実行し、直接.exeを実行してボタンをクリックし、読み込み時間を比較してください。
これはかなりの時間のためにEFを悩ませてきた共通の問題で、私は彼らがEF6でそれに対処するつもりだったと思った..しかし、多分.. EF6が提供することの一つは、あなたのモデルを分割する機能ではありませんあなたのベスト・ベットになる可能性のある複数のモデルに変換します。 –
http://entityframework.codeplex.com/wikipage?title=ultiantant%20migrations –
複数のコンテキストでの中断は何も変更しませんでした。すべてのコンテキストは 'ルール'に従っているので、ロードするまではロードするのにほぼ同じ時間がかかりますが、それらの間には多数の外部キーがあるため、すべてロードする必要があります。 –