方法: LightSwitch でデータ リレーションシップを定義する
LightSwitch のデータ デザイナーでは、データ間のリレーションシップを作成、変更、または削除できます。 リレーションシップを使用すれば、関連データが相互に作用する画面を作成できます。たとえば、顧客と注文の両方を表示する画面を作成できます。
このドキュメントは、次のセクションで構成されています。
同じデータ ソースを使用するテーブルまたはエンティティの間にリレーションシップを追加する
別々のデータ ソースを使用するテーブルまたはエンティティの間にリレーションシップを追加する
リレーションシップを変更する
多重度を設定する
削除動作の設定
関連するビデオ デモは、「How Do I: Define My Data in a LightSwitch Application? (操作方法: LightSwitch アプリケーションでデータを定義する)」で参照できます。
同じデータ ソースを使用するテーブル間またはエンティティ間にリレーションシップを追加する
LightSwitch データ デザイナーを使用して、LightSwitch 内部データベースに格納されている 2 つのテーブル間にリレーションシップを設定できます。 場合によっては、このデータ デザイナーを使用して、同じ外部データ ソースを使用する 2 つのエンティティ間にリレーションシップを追加することもできます。 それ以外の場合は、これらのリレーションシップをサーバー上で作成した後、LightSwitch でデータ接続を更新する必要があります。 データ ソースへの接続を更新する方法の詳細については、「方法: データに接続する」を参照してください。
LightSwitch 内部データベースのテーブル間にリレーションシップを追加するには
ソリューション エクスプローラーで、リレーションシップを設定する一方のテーブルのショートカット メニューを表示し、[開く] を選択します。
注意
Visual Studio 2012 更新プログラム 2 にアップグレードしたアプリケーションでは、パースペクティブ バーで [サーバー] タブを選択します。
データ デザイナーのコマンド バーで、[リレーションシップ] ボタンをクリックします。
[新しいリレーションシップの追加] ダイアログ ボックスの [名前] 行で、リレーションシップを適用する 2 つのテーブル (Customers と Orders など) を選択します。
[多重度] 行で、これらのテーブルの関連を指定します。
「多重度の設定」を参照してください。
[削除時の動作] 行で、リレーションシップが設定された一方のテーブルのレコードをユーザーが削除したとき、もう一方のテーブルに残っている関連レコードのデータをどのように処理するかを指定します(たとえば、ユーザーがある顧客を削除したとき、その顧客からの注文データが存在する場合など)。
「削除時の動作の設定」を参照してください。
[ナビゲーション プロパティ] 行に各ナビゲーション プロパティの名前を入力し、[OK] をクリックします。
ナビゲーション プロパティは、関連データを表示する画面の領域間を移動するユーザーに役立ちます。 ナビゲーション プロパティは IntelliSense でオブジェクトとして表示され、これらのオブジェクトを使用してコードで LINQ 式を作成できます。
アタッチされたデータベース内のテーブル間にリレーションシップを追加するには
ソリューション エクスプローラーで、リレーションシップを設定する一方のテーブルのショートカット メニューを表示し、[開く] を選択します。
注意
Visual Studio 2012 更新プログラム 2 にアップグレードしたアプリケーションでは、パースペクティブ バーで [サーバー] タブを選択します。
データ デザイナーのコマンド バーで、[リレーションシップ] ボタンをクリックします。
[新しいリレーションシップの追加] ダイアログ ボックスが開きます。
[名前] 行の [宛先] 列で、リレーションシップを適用するテーブルを選択します。
テーブルには、リレーションシップのプライマリ側で使用されるプライマリ キーが含まれている必要があります。
[多重度] 行で、これらのテーブルの関連を指定します。
「多重度の設定」を参照してください。
[新しいリレーションシップの追加] の下部付近にあるデータ グリッドで、リレーションシップの [外部] の側からプロパティを選択します。
このプロパティは [プライマリ] キー プロパティのデータ型と一致する必要があります。
注意
テーブルに複合主キーが含まれている場合は、すべての外部キーのデータ型が一致する必要があります。
注意
0 または 1 対多リレーションシップの場合、[外部] キー プロパティは必須フィールドにできません。1 対多リレーションシップの場合、[外部] キー プロパティは必須フィールドである必要があります。0 または 1 対 1 リレーションシップの場合は、リレーションシップの両側で主キーの値が使用されます。
[OK] を選択します。
別々のデータ ソースを使用するテーブルまたはエンティティの間にリレーションシップを追加する
LightSwitch データ デザイナーを使用して、別々のデータ ソースを使用するテーブルまたはエンティティの間にリレーションシップを追加できます。 たとえば、LightSwitch 内部データベースのテーブルと、SharePoint リストのエンティティの間にリレーションシップを追加できます。
別々のデータ ソースを使用する 2 つのテーブルまたはエンティティの間にリレーションシップを追加するには
ソリューション エクスプローラーで、リレーションシップを設定する一方のテーブルのショートカット メニューを表示し、[開く] を選択します。
注意
Visual Studio 2012 更新プログラム 2 にアップグレードしたアプリケーションでは、パースペクティブ バーで [サーバー] タブを選択します。
データ デザイナーのコマンド バーで、[リレーションシップ] ボタンをクリックします。
[新しいリレーションシップの追加] ダイアログ ボックスが開きます。
[名前] 行で、リレーションシップを適用するテーブルまたはエンティティ (Customers と Orders など) を選択します。
[多重度] 行で、これらのテーブルまたはエンティティの関連を指定します。
「多重度の設定」を参照してください。
注意
この種類のリレーションシップでは [削除時の動作] を指定できません。
[ナビゲーション プロパティ] 行で、各ナビゲーション プロパティの名前を指定します。
ナビゲーション プロパティは、関連データを表示する画面の領域間を移動するユーザーに役立ちます。 ナビゲーション プロパティは IntelliSense でオブジェクトとして表示され、これらのオブジェクトを使用してコードで LINQ 式を作成できます。
[新しいリレーションシップの追加] ダイアログ ボックスの下部に表示されるデータ グリッドで、一方のテーブルまたはエンティティのプロパティを選択し、もう一方のテーブルでそれに関連するプロパティを選択します。[OK] をクリックします。
これらのプロパティは、テーブルまたはエンティティが結合される場所です。 たとえば、Customer エンティティの [Id] プロパティと、Order エンティティの [CustomerID] プロパティを選択します。
リレーションシップを変更する
LightSwitch のデータ デザイナーを使用して、リレーションシップを変更または削除できます。
既存のリレーションシップを変更するには
ソリューション エクスプローラーで、リレーションシップを設定している一方のテーブルのショートカット メニューを表示し、[開く] を選択します。
注意
Visual Studio 2012 更新プログラム 2 にアップグレードしたアプリケーションでは、パースペクティブ バーで [サーバー] タブを選択します。
データ デザイナーで、別のエンティティまたはテーブルへのリレーションシップを表すナビゲーション プロパティを選択します。
たとえば、Customer エンティティに Orders という名前のプロパティがある場合、この "Orders" を Customer-Order リレーションシップのナビゲーション プロパティとして使用します。
[プロパティ] ウィンドウで [リレーションシップ プロパティの編集] リンクを選択します。
[リレーションシップの変更] ダイアログ ボックスが表示されます。
リレーションシップを変更するには、このトピックの該当するセクションを参照してください。
同じデータ ソースを使用するエンティティ間でリレーションシップを追加する
別々のデータ ソースを使用するエンティティ間にリレーションシップを追加する
[OK] をクリックして [リレーションシップの編集] ダイアログ ボックスを閉じます。
リレーションシップを削除するには
ソリューション エクスプローラーで、リレーションシップを設定している一方のテーブルのショートカット メニューを表示し、[開く] を選択します。
注意
Visual Studio 2012 更新プログラム 2 にアップグレードしたアプリケーションでは、パースペクティブ バーで [サーバー] タブを選択します。
データ デザイナーで、別のエンティティまたはテーブルへのリレーションシップを表す接続線のショートカット メニューを開き、[リレーションシップの削除] を選択します。
多重度の設定
次の表は、LightSwitch で選択できる多重度の設定の組み合わせです。
開始側 の値 |
終端側の値 |
説明 |
---|---|---|
1 |
0 または 1 |
"開始側" は 0 または 1 つの "終端側" を持つことができますが、"終端側" は 1 つの "開始側" を持つ必要があります。 |
1 |
多 |
"開始側" は複数の "終端側" インスタンスを持つことができますが、"終端側" は 1 つの "開始側" を持つ必要があります。 |
0 または 1 |
1 |
"開始側" は 1 つの "終端側" を持つ必要がありますが、"終端側" は 0 または 1 つの "開始側" を持つことができます。 |
0 または 1 |
多 |
1 つの "開始側" を複数の "終端側" に関連付けることができます。ただし、"終端側"は 1 つまたは 0 の"開始側" しか持つことができません。 |
多 |
1 |
"開始側" は 1 つの "終端側" を持つ必要があります。ただし、"終端側" は複数の "開始側" インスタンスを持つことができます。 |
多 |
0 または 1 |
"開始側" は 1 つまたは 0 の "終端側" を持つことができます。"終端側" は複数の "開始側" を持つことができます。 |
注意
LightSwitch のデータ デザイナーでは、1 対 1、0 または 1 対 0 または 1、多対多のリレーションシップを指定することはできません。
削除時の動作の設定
次の表では、リレーションシップにあるレコードを削除しようとしたときに生じる動作をユーザーが管理するために設定できるオプションについて説明します。 いくつかのオプションは、特定の種類のリレーションシップでは利用できない可能があります。
[削除動作] 値 |
説明 |
---|---|
連鎖削除 |
「Table1」が削除された場合、関連するすべての「Table2」インスタンスを削除します。 |
Restricted |
関連する "Table2" インスタンスが存在する場合、"Table1" を削除できません。 たとえば、データベースに関連する注文がある場合に、顧客を削除できないことを指定するには [制限付き] を選択します。 |
関連付けの解除 |
「Table1」が削除された場合、関連する「Table2」インスタンスでの「Table1」への参照を null に設定します。 |