5

ある ORM から別の ORM に変換しています (LLBGen Pro から Entity Framework)。適切にリファクタリングするには、何かを理解する必要があります。LLBGen Pro には、プリフェッチ パスと呼ばれる概念があります。遅延読み込みがパフォーマンスに悪影響を与える場合に必要なクエリの数を減らすために、プリフェッチ パスが存在します。Gen Pro で、50 件の注文があり、各注文に関連する顧客を収集したいとします。遅延読み込みを使用すると、最終的に 51 個の DB クエリが発生する可能性があります。プリフェッチ パスが有効になっている 2 つのクエリに対して、顧客の遅延読み込みが原因で、注文ごとに 1 つ、各顧客ごとにさらに 50 です。

私の理解では、エンティティ フレームワーク (またはおそらく LINQ to SQL) が状況に最適な SQL を生成するということです。Entity Framework は、LLB Gen Pro ができないような場合にクエリを最適化するのに十分スマートですか? 言い換えれば、エンティティ フレームワークは実行時に SQL をインテリジェントに生成し、「先を見越して」すべての顧客のニーズを把握し、50 個の個別のクエリではなく単一のクエリを生成できますか? または、EF はある種の「プリフェッチ パス」をサポートしていますか、それとも高度なカスタム式ツリーが必要ですか?

4

1 に答える 1

5

EF は (まだ) それほどスマートではありません。

Includeを探していると思います。この関数を使用すると、関連するエンティティを熱心に読み込むことができます。

于 2013-07-24T13:30:53.373 に答える