2011-01-26 4 views
1

私たちはEntity Framework 4を使用するプロジェクトを持っています。私は、事前生成されたビューをテストしました。しかし、パフォーマンスの違いはまったくありません。例:約20列のトランザクションテーブルがあります。事前生成されたビューは、このようなクエリを初めて実行する際に役立ちますか?Entity Framework 4:事前生成されたビューは、どのシナリオでパフォーマンスを向上させますか?

トランザクショントランザクション= repo.Single(t => t.TransactionId == 22857);

より一般的に、事前生成されたビューは、「場所」ステートメントが異なるシナリオでパフォーマンスを向上させますか?

もう1つの奇妙なことは、私がデバッグで実行すると、自動生成された... Views.csクラスにブレークポイントが設定され、コードが自動生成された... Views.csクラスに入ることがないということです。

答えて

1

事前生成されたビューは、あなたのようなカスタムクエリには役に立ちません。しかし、CompiledQueryがこれを助けるでしょう。

これらは、たとえばmyEntity.SomeAssociation.Load()で生成されたクエリに役立ちます。または怠惰な読み込み。または無制限のすべてを選択します。

コンテキスト内の最初の実行に役立ちますが、目立った改善になる可能性があります。 ctx.Transaction.Includeにおけるトランザクションから

+0

静的読み取り専用のFunc > s_compiledQuery2 = CompiledQuery.Compile >((CTX、MYID)=>( "Debtor.Creditor.Identity ").Include(" Debtor.Identity.DefaultPostAddress ")ここで、transaction.TransactionId == myId && transaction.IsCustomerTransaction && transaction.IsPosted select transaction);この問合せは、実際にはプリコンパイル時にSLOWERです。おそらく含まれているため?しかし、これを行うには、プリコンパイルが効果的であるようにする方法がありますか? –

+0

プリコンパイルでは、最初の実行でメリットはありません。 2番目にのみ+。 –

関連する問題