DataSource for Entity Framework for WinForms
マスター/詳細連結
設計時の機能 > マスター/詳細連結

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

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

  1. サーバー側のフィルタ処理」の説明で作成したプロジェクトを使用します。前と同様に、同じ ContextType を使用して、C1DataSource コンポーネントを含むフォームを新しく追加し、Categories に基づく ViewSource を作成します。このフォームをスタートアップフォームにすることで、プロジェクトの実行にかかる時間を短縮することができます。
  2. "マスター" グリッドにするグリッドをフォームに追加し、その C1DataSource プロパティを C1DataSource に、DataMember プロパティを Categories に設定します。

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

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

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