Web開発でEF6に問題があります。インデックスページでは、いくつかの情報を表示するためにクエリを実行する必要があります。問題は、最初のクエリがメモリ上にモデルを作成し、それを行うのに10秒以上かかります(素晴らしいホスティングではありません)。 人々はこれをどのように処理しますか?直接クエリで最初のデータを取得しますか? txtファイルを読む?エンティティフレームワーク6でモデルのパフォーマンスが生成される
答えて
デフォルトでは、EFにはスナップショットの変更追跡メカニズムがあります。
エンティティの状態は、データベースからロードされるたびに保存されます。たとえばSaveChangesメソッドが呼び出されると、Entity Frameworkは現在のコンテキスト内のすべてのエンティティをチェックし、保存された状態と比較します。
これはこれはでコンテキストCTORチャックに...時々遅いタッチすることができます:
this.Configuration.AutoDetectChangesEnabled = false;
これは、ここではオーバーヘッドのビットを奪う必要があるエンティティの追跡をオフにします。
しかし、かなり静的なデータであれば、アプリ起動時にキャッシュを使用してデータを保持することができます。メモリからデータを取り出し、x時間/分ごとにリフレッシュする必要があります。あなたは、私が期待してはるかに費用は一切かかりませんことができ、展開などのためで動作するように非常に簡単になる場合
また、余談として、AZUREに移動
二つのこと、私は思いますがあります。 do: 1)クエリをプロファイルし、実際に10秒かかるかどうか確認してください。 EFから生成されたSQLクエリを表示する方法については、LINQPad、Glimpse、またはStackifyプレフィックスを参照してください。非効率なクエリが問題になることがあります。 DB内のビューを使用するか、インデックスを設定すると問題が解決する可能性があります。
2)このクエリを1回実行し、その後の要求にメモリ内コピーを使用する場合は、MemoryCacheを使用します。最初の要求ではまだパフォーマンスが低下しますが、その後のすべての要求は、キャッシュが最後に設定されている間は非常に高速です。結果をメモリに長期間保存しているため、これを使用するとメモリヒットが発生します。すべての訪問者がインデックスページで動的リクエストを受け取った場合は、大量のメモリを使用します。要求がすべてのユーザーで同じ場合、これは最適なオプションです。
- 1. エンティティフレームワークのコード生成ツールでナビゲーションプロパティが生成されないようにする
- 2. リアクションレスキューで生成されたステートレスコンポーネントのパフォーマンス
- 3. エンティティフレームワーク6コード生成 - 名前付け規則の変更
- 4. エンティティフレームワーク6 datagridviewネストされた子データバインド
- 5. エンティティフレームワーク6:のUserProfile
- 6. エンティティフレームワーク6のセカンドレベルキャッシュ。
- 7. エンティティフレームワークのパフォーマンス
- 8. エンティティフレームワークのコード生成
- 9. エンティティフレームワークのパフォーマンスを向上させるクエリ
- 10. は、エンティティフレームワーク6
- 11. WPF Prism 6 Viewモデルが複数回作成されました
- 12. エンティティフレームワークのモデルから挿入スクリプトを生成
- 13. ストアドプロシージャとエンティティフレームワークのパフォーマンス
- 14. エンティティフレームワークのパフォーマンス問題
- 15. Entity Framework 6クエリによってNullReferenceExceptionが生成される
- 16. エンティティフレームワークでモデルを生成するのに30分かかります
- 17. Djangoモデルformsetクエリで余分なオブジェクトが生成される
- 18. エンティティフレームワーク生成クラスのカスタマイズ
- 19. POCO対エンティティフレームワークの生成クラス?
- 20. エンティティフレームワークでエラーが発生するスクリプトを生成します。
- 21. エンティティフレームワークから自動生成されたクラスを拡張する
- 22. エンティティフレームワーク6のキャッシュクエリの結果?
- 23. エンティティフレームワークのストアドプロシージャと生成されたSQLの比較
- 24. エンティティフレームワーク生成されたSQL - タイプごとのテーブル - 実行者?
- 25. EF 6関係:モデル生成中に1つまたは複数の検証エラーが検出されました
- 26. Scaffold-DbContextでモデルが生成されない
- 27. スワッガーでAPIモデル値が生成されない
- 28. スプラットコンパイラで生成されたコードの相対的なパフォーマンス
- 29. Entity Frameworkの自動生成クラスのコードは、モデルが更新されるたびに再生成されます。
- 30. エンティティフレームワークapp.config構成でデータベースが作成されない
事前にEFビューを生成することができます。https://msdn.microsoft.com/en-us/data/dn469601.aspx – Riv
クエリのコードを入力してください。 –
@Riv私は前もってビューを生成しようとしています。私はこのオプションを前に見ましたが、それは10個のエンティティと少数の関係を持つシンプルなモデルです。デフォルトで動作するはずです... – Maxi