データベースに対してクエリを実行するためにEF(dllバージョンは4.4)を使用しています。データベースには、コース情報を含む複数のテーブルが含まれています。実際にdbに送られたものを見てみると、大規模な、ほぼ1300行のSQLクエリがあります(サイズのためにここに貼り付けません)。Include()を使用すると、EFで大量のSQLクエリが生成されないようにするには
entities.Plans
.Include("program")
.Include("program.offers")
.Include("program.fees")
.Include("program.intakes")
.Include("program.requirements")
.Include("program.codes")
.Include("focuses")
.Include("codes")
.Include("exceptions")
.Include("requirements")
where plans.Code == planCode
select plans).SingleOrDefault();
は私が関連テーブルのそれぞれから情報を収集する際、サーバーに戻ることがないようにしたいが、このような大規模なクエリと私は思ったんだけど場合:私は、コンテキストに実行しているクエリは次のようになりますこれを行うにはより良い方法がありますか?
ありがとうございました。
まあ、あなたは熱心な読み込みをしており、あなたのクエリはすべてのデータを一度に取得しようとしています。あなたはそこに問題として何を正確に見ていますか?他のオプションは、アクセスしようとするとEFによってバックグラウンドでフェッチされる仮想プロパティを使用して遅延読み込みを行うことですが、データベースへのラウンドトリップを望まないと指定しました。 –
類似の回答があります。http://stackoverflow.com/questions/5521749/how-many-include-i-can-use-on-objectset-in-entityframework-to-retain-performance –
私は私はこれを正しく見ているのだろうかと思っています。 1つの巨大なクエリ対いくつかの小さなクエリか、これを行うより良い方法があるかどうか。 – b3n