2017-05-10 6 views
0

私はプラットフォームで作業しており、以下のような状況があります。リストから作成されたIQueryableが再びリストに変換されると、SQL Serverがヒットしますか?

IQueryable<customer> q1 = ef expression; 
IList<customer> l1 = q1.ToList(); 

IQueryable<entity> q2 = l1.select(c => c.customerrId) AsQueryable(); 
IList<customer> l2 = q2.ToList(); 

q2.toList()はSQL Serverで再度クエリを実行しますか?

+1

あなたはそれを試してみてはどうでしょうか?これをテストするのは簡単です。 – Amy

+2

SQL Server Profilerを試す – Yaman

答えて

1

私は100%ではありませんが、データベースが再びヒットしないと思います。コレクションを列挙すると、データがメモリに格納されます。たとえそれをQueryableオブジェクトとして再度設定したとしても。

しかし、何が起こるかを確認するためにクエリを実行すると、他の人が言っているように、SQLサーバーをチェックします。

+0

Andrewに感謝します。私はこれを理解するためにプロファイラでテストしました。 q2.toList()のデータベースをもう一度打つことはありません。 –

1

パフォーマンスに関連するものは、常にプロファイルであり、簡単に期限切れになる可能性があるため、アドバイスに依存しないでください。コードとデータベースをプロファイルし、簡単なテストコードで何が起こるかを確認してください。

SQL Server Profilerを使用して、どのようなクエリが行われ、どれくらい時間がかかるかを確認できます。

関連する問題