WPF形式にバインドされたネストされたリストを持つEF 4.1データのLinqクエリ

この前の質問から引き続き:


ネストされたリストを含むEF 4.1データのLinqクエリ

WPFはデータをバインドするために ObservableCollection
を必要とします。コンストラクタのリストを使用して ObservableCollection
を作成できることはわかっています。

new ObservableCollection(myListName)

しかしネストされたグループはWPFフォームにバインドするか、linqクエリの結果を各レベルで
ObservableCollections で事前定義された型に実行する必要がありますか?

ベストアンサー

You can use directly ObservableCollection and
ObservableCollection instead of IList and
IList in your model classes. This way you ensure that
Entity Framework will materialize the collection as
ObservableCollection when you use eager or lazy
loading. With IList EF would create a
List as the concrete type and not an
ObservableCollection.

ナビゲーションプロパティが virtual
としてマークされている場合は、遅延読み込みを使用しています。つまり、WPFフォームがプロパティにアクセスするとすぐにコレクションが自動的にロードされます。
(これを実現するためにコンテキストを削除してはいけません。)

1回のクエリですべてのコレクションを一度にロードする場合は、熱心な読み込みを使用できます。

var students = new ObservableCollection(
    context.Students.Include(s => s.Schools.Select(sc => sc.Classes)));

This blog post might be helpful as well.

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です