Entity Frameworkモデルからデータを抽出する方法に応じて、さまざまな種類の結果が得られます。私は、ナビゲーションプロパティを使用している場合Entity Framework - ObjectContextからのクエリとナビゲーションプロパティからのクエリの比較
var employees = MyObjectContext.Employees.Where(e => e.DepartmentId == MyDepartment.Id && e.SomeCondtition)
しかし:私はのObjectContextから直接引いた場合、私は実際にSystem.Data.Objects.ObjectQuery<Employee>
あるIQueryable<Employee>
を取得
:たとえば、特定の部門の従業員のリストを取得するとき私は頻繁にを使用し、次のコードでは
var employees = MyDeparment.Employees.Where(e => e.SomeCondtition)
:MyDepartment、私は実際にSystem.Linq.WhereEnumerableIterator<Employee>
(System.Linq.Enumerableでプライベートクラス)である、IEnumerable<Employee>
を取得しますいくつかのLINQクエリ(Where
、OrderBy
、First
、Sum
など)
私は考慮に入れれるべき私が使用しているクエリ方法で?パフォーマンスの違いはありますか?後者は遅延実行を使用していますか?一つのより良い練習ですか?それとも違いがないのでしょうか?後者の方法を使用した場合、どれも直接クエリを使用していないとき
私はIEnumerableを警告の可能な複数の列挙のこの整形6をインストールするので、私は取得していますので、多くを尋ねます。私は後者の方法をもっと頻繁に使ってきました。なぜなら、書くのがはるかに洗練されているからです。そうした方が実際に有害な影響を与えているのだろうかと思います。
ありがとうございます。このコンテキストで使用すると、ナビゲーションプロパティを完全に避ける必要がありますか?または、列挙可能なナビゲーションプロパティでCreateSourceQuery()を呼び出すことと同じになりますか? – Ross
'CreateSourceQuery'を使うともう一度IQueryableを使います。これはOKです。ナビゲーションプロパティ自体はクエリ用ではありません。それらは関連するオブジェクトを扱うためのものです。 –
ナビゲーションプロパティはフィルタリングのための準拠クエリよりも利点がありますか? – ManirajSS