私はPOCOオブジェクトでエンティティフレームワークを使用しています.LazyLoadingが有効になっています。Entity Framework 4レイジーローディングエンティティセット
オブジェクトに関連付けられたコレクションで作業している場合、コレクションはいつ完全にロードされ、どのような状況になりますか?
私はこれらの
Order.OrderItems.Count()
Order.OrderItems.Any(x => x.StatusId = aValue)
Order.OrderItems.All(x => x.StatusId = aValue)
のそれぞれを呼び出す場合、これらのいずれかがのOrderItemsコレクションの完全な読み込みを保証していますか?
を照会した後
context.LoadProperty(order, “OrderItems”)
を問い合わせる場合、またはコード内のポイントで 我々は
Order.Include(“OrderItems”)
を呼んでいる。しかし、私は時々、これは常に起こっていません実現してきた - と私が知りたいですこれの結果は起こらない。私は、一般的に、あなたはそれらの結果の上に、または追加
foreach
ToList
は、
ToArray
は、などこれはにどのようにLINQのどちらかになるまで、あなたのデータをロードしないこと
ありがとう@Merlyn Morgan-Graham。 'Linqがブール値または整数を返す必要がある場合は、すぐにクエリを実行する可能性があることを明確にしてください。'私はhttp://msmvps.com/blogs/jon_skeet/archive/2010/12/28/reimplementing-linq-to-objects-part-10-any-and-all.aspxを見てきました。すべては実際にカバーの下の結果を反復するので、自動的にコレクションを実現します。だからAny/Allが外側のクエリでコレクションをロードするかのようです。 –
@TimBrown: "AnyとAllは実際にはカバーの下の結果を反復するので、コレクションを自動的に実現します。"私はこれが私が言ったこととまったく同じだと思う、ちょうどweasel-speak( "おそらく" = **常に**、笑)。私はちょうどそれがうまくいけばその文をクリアした編集をしました。 –
また、ネストされたクエリによって、私は 'Order.OrderItems.Where(i => i.Rebates.Any())'のようなものを意味します - 'Rebates.Any()'は外部クエリが評価される。 –