DataSource for Entity Framework for WPF/Silverlight
マスター/詳細連結
DataSource for Entity Framework > マスター/詳細連結

サーバー側のフィルタ処理|document=WordDocuments\C1DataStudio-WPF.docx;topic=Server-Side Filtering」の例で紹介したように、C1DataSource はマスター/詳細連結をサポートしています。大規模なデータセットでは、サーバー側のフィルタ処理が最適なソリューションですが、規模の小さなデータセットでは、クライアント側のフィルタ処理も同様に効率的です。次のシナリオでは、前の例|document=WordDocuments\C1DataStudio-WPF.docx;topic=Server-Side Filteringで使用したコンボボックスではなく、グリッドを使用してクライアント側のマスター/詳細連結を実行し、カテゴリを選択します。

マスター/詳細連結を実装するには、次の手順に従います。

  1. サーバー側のフィルタ処理|document=WordDocuments\C1DataStudio-WPF.docx;topic=Server-Side Filtering」の説明で作成したプロジェクトを使用します。前と同様に、同じ ObjectContextType を使用して、C1DataSource コンポーネントを含むフォームを新しく追加し、Categories に基づく ViewSource を作成します。このフォームをスタートアップフォームにすることで、プロジェクトの実行にかかる時間を短縮することができます。
  2. 次に、フォームにマスターグリッドを追加し、それを Categories に連結します。

ItemsSource="{Binding ElementName=c1DataSource1, Path=Categories}"

  1. 次に、フォームで、設定したグリッドの下に2つ目のグリッドを追加します。その DataSource も C1DataSource に設定しますが、DataMember プロパティは Categories の下にある Products ノードに設定します(次の図を参照)。

または、XAML で直接入力できます。

ItemsSource="{Binding ElementName=c1DataSource1, Path=Categories/Products}"

  1. アプリケーションを保存、ビルド、および実行します。

連結で "/" を使用した Path=Categories/Products のような形式の Path パラメータを指定すると、現在選択されているカテゴリに属する製品がグリッドに自動的に表示されます。これを単一のマシンで実行した場合、マスターグリッドで新しいカテゴリを選択してから関連する製品が詳細グリッドに表示されるまでに、目立った遅延は見られないでしょう。バックグラウンドでは、C1DataSource は Entity Framework の "暗黙の遅延ロード" 機能を利用しており、製品は新しいカテゴリが選択されたときにのみ収集されます。多くのシナリオでは、これでまったく問題ありません。ただし、このセクションの冒頭で、特に規模の小さなデータセットのマスター/詳細関係について言及しました。その場合は、フォームをロードするときにすべてのカテゴリのすべての製品をフェッチした方がよく、これで、単一のマシンでもネットワークにアクセスする場合でも瞬時に表示が行われます。それには、ViewSourceCollection エディタを開き、Categories ビューソースの Include プロパティに「Products」と入力します。