1

現在、.NET Entity FrameworkのSelfTrackingエンティティを使用していますが、クエリの実行を高速化したいと考えています。

誰もが最初に提案しているように見えるのは、コンパイル時にモデルのビューを生成することです。

ssdlファイルなどを使用して、プロジェクトでコンパイルされる「MyModel.Views.cs」を作成することができました。しかし、私はこれの利点をこれまで見たことがありませんか?ここで何かが足りませんか?自己追跡エンティティを使用している場合、これによるメリットはありませんか?

Entity Frameworkでパフォーマンスを向上させる他の方法はありますか?コンパイル済みビューを作成し、パラメーターを指定するにはどうすればよいですか?たとえば、検索クエリはさまざまな異なるパラメータを使用する必要がありますが、より高速にすることで実行できます。

ありがとう

4

2 に答える 2

0

事前に生成されたビューは、使用しているクエリに関係なく常に使用されます。事前に生成されたビューとは何かを説明しましょう。エンティティデータモデルを最初にクエリすると、esqlビューに変換されます。これは、モデルをクエリするときに実行時およびオンデマンドで発生する最初のステップです。そのビューが作成されると、アプリケーションドメインの存続​​期間中キャッシュされます。ただし、ビューの生成は、誰かが初めてサイトにアクセスしたときに最初にヒットするasp.netサイトと同じように、1回限りのコストです。最初のユーザーの時間を節約できますが、その後は実際には同じエクスペリエンスになります。モデルが大きく、最初のクエリの起動コストが高い場合にのみ、ビューの事前生成を検討する必要があります。一般に、自己追跡エンティティとEFのパフォーマンスを向上させる方法はたくさんあります。

于 2010-07-07T14:53:41.433 に答える
0

事前に生成されたビューは特定の操作にのみ役立つことを忘れないでください。これらは、EntityFramework自体によって構築されるクエリに役立ちます。たとえばLoad、関連するプロパティでを実行する場合、使用可能な場合は、事前に生成されたビューが使用されます。一方、プロジェクションまたはカスタムWhereコールを実行している場合、事前に生成されたビューはカスタムクエリを表していないため、使用できません。だからそれはあなたがしていることに依存します。

ビューの事前生成の利点は、ほぼ無料であるということです。プロジェクトファイルを少しいじると、特定の操作でパフォーマンスが向上します。しかし、すべてが速くなるわけではありません。

于 2010-06-08T12:34:53.347 に答える