方法: データ リレーションシップを定義する
データ間のリレーションシップの作成、変更、または削除は、LightSwitch のデータ デザイナーを使用して行うことができます。リレーションシップを使って、関連データが相互に作用する画面を作成できます。たとえば、顧客と注文の両方を表示する画面を作成できます。
このドキュメントは、次のセクションで構成されています。
同じデータ ソースからのテーブルまたはエンティティの間でリレーションシップを追加する
別のデータ ソースからのテーブルまたはエンティティの間でリレーションシップを追加する
リレーションシップを変更する
多重度の設定
削除動作の設定
関連のビデオ デモについては、「操作方法: LightSwitch アプリケーションでデータを定義する」を参照してください。
同じデータ ソースからのテーブルまたはエンティティの間でリレーションシップを追加する
LightSwitch データ デザイナーを使用して、LightSwitch の内部データベースの 2 つのテーブル間のリレーションシップを追加できます。場合によっては、データ デザイナーを使用して、特定の制約に従い、同じ外部データ ソースからエンティティのリレーションシップを追加することもできます。それ以外の場合は、これらのリレーションシップをサーバー上で作成して、LightSwitch でデータ接続を更新する必要があります。データ ソースへの接続を更新する方法の詳細については、「方法: データに接続する」を参照してください。
LightSwitch 内部データベース内のテーブル間にリレーションシップを追加するには
ソリューション エクスプローラーで、リレーションシップで使用する予定のテーブルをどれかダブルクリックします。
データ デザイナーのコマンド バーで、[リレーションシップ] をクリックします。
[新しいリレーションシップの追加] ダイアログ ボックスの [名前] 行で、リレーションシップを適用する 2 つのテーブル、たとえば顧客と注文を選択します。
[多重度] 行で、これらのテーブルの関連を指定します。多重度およびリレーションシップの種類の詳細については、「Multiplicity Settings」を参照してください。
[削除動作] 行で、ユーザーが 1 つのテーブル内のレコードを削除しようとしたものの、そのデータが他のテーブル内の関連レコードに存在する場合、アプリケーションが行う動作を指定します。たとえば、ユーザーが顧客を削除しようとしたものの、顧客の注文がまだ存在する場合です。詳細については、「Delete Behavior Settings」を参照してください。
[ナビゲーション プロパティ] 行で、すべてのナビゲーション プロパティの名前を指定します。ナビゲーション プロパティは、関連データを表示する画面の領域間を移動するユーザーに役立ちます。ナビゲーション プロパティも IntelliSense でオブジェクトとして表示され、これらのオブジェクトを使用してコードで LINQ 式を作成することができます。
[OK] をクリックします。
アタッチされたデータベース内のテーブル間にリレーションシップを追加するには
ソリューション エクスプローラーで、リレーションシップで使用する予定のテーブルをどれかダブルクリックします。
データ デザイナーのコマンド バーで、[リレーションシップ] をクリックします。
[新しいリレーションシップの追加] ダイアログ ボックスが開きます。
[名前] 行の [宛先] 列で、リレーションシップを適用するテーブルを選択します。
テーブルには、リレーションシップのプライマリ側で使用されるプライマリ キーが含まれている必要があります。
[多重度] 行で、これらのテーブルの関連を指定します。
詳細については、「Multiplicity Settings」を参照してください。
[新しいリレーションシップの追加] の下部付近にあるデータ グリッドで、リレーションシップの [外部] の側からプロパティを選択します。
このプロパティは [プライマリ] キー プロパティのデータ型と一致する必要があります。
[!メモ]
テーブルに複合主キーが含まれている場合は、すべての外部キーのデータ型が一致する必要があります。
[!メモ]
0 または 1 対多リレーションシップの場合、[外部] キー プロパティは必須フィールドにできません。1 対多リレーションシップの場合、[外部] キー プロパティは必須フィールドである必要があります。0 または 1 対 1 リレーションシップの場合は、リレーションシップの両側で主キーの値が使用されます。
[OK] を選択します。
別のデータ ソースからのテーブルまたはエンティティの間でリレーションシップを追加する
LightSwitch データ デザイナーを使用して、別のデータ ソースからのテーブルまたはエンティティ間のリレーションシップを追加できます。たとえば、LightSwitch 内部データベースのテーブルと、SharePoint リストからのエンティティの間のリレーションシップを追加できます。
別のデータ ソースからの 2 つのテーブルまたはエンティティの間でリレーションシップを追加する
ソリューション エクスプローラーで、リレーションシップで使用する予定のテーブルまたはエンティティのいずれかをダブルクリックします。
データ デザイナーのコマンド バーで、[リレーションシップ] をクリックします。
[新しいリレーションシップの追加] ダイアログ ボックスの [名前] 行で、リレーションシップを適用するテーブルまたはエンティティ、たとえば顧客と注文を選択します。
[多重度] 行で、これらのテーブルまたはエンティティの関連を指定します。多重度およびリレーションシップの種類の詳細については、「Multiplicity Settings」を参照してください。
[!メモ]
[削除動作] 行はこの種のリレーションシップでは有効になっていないことに注意してください。
[ナビゲーション プロパティ] 行で、すべてのナビゲーション プロパティの名前を指定します。ナビゲーション プロパティは、関連データを表示する画面の領域間を移動するユーザーに役立ちます。ナビゲーション プロパティも IntelliSense でオブジェクトとして表示され、これらのオブジェクトを使用してコードで LINQ 式を作成することができます。
[新しいリレーションシップの追加] ダイアログ ボックスの下部に表示されるデータ グリッドで、1 つのテーブルまたはエンティティからプロパティを選び、他のテーブルまたはエンティティで関連プロパティを選択します。これらのプロパティは、テーブルまたはエンティティが結合される場所です。たとえば、顧客エンティティの [Id] プロパティと、注文エンティティの [CustomerID] プロパティを選択します。
[OK] をクリックします。
リレーションシップを変更する
LightSwitch データ デザイナーを使用してリレーションシップを変更または削除することができます。
既存のリレーションシップを変更するには
ソリューション エクスプローラーで、リレーションシップで使用しているエンティティまたはテーブルのいずれかをダブルクリックします。
データ デザイナーで、別のエンティティまたはテーブルへのリレーションシップを表すナビゲーション プロパティを選択します。たとえば、顧客エンティティには、顧客と注文のリレーションシップでナビゲーション プロパティとして使用する [注文] という名前のプロパティがあるかもしれません。
[プロパティ] ウィンドウで、[リレーションシップのプロパティの編集] をクリックします。
[リレーションシップの変更] ダイアログ ボックスが表示されます。
リレーションシップを変更するには、このドキュメントの適切なセクションを参照してください。
同じデータ ソースからのエンティティの間でリレーションシップを追加する
別のデータ ソースからのエンティティの間でリレーションシップを追加する
[OK] をクリックします。
リレーションシップを削除するには
ソリューション エクスプローラーで、リレーションシップで使用しているエンティティまたはテーブルのいずれかをダブルクリックします。
データ デザイナーで、別のエンティティまたはテーブルへのリレーションシップを表すナビゲーション プロパティを右クリックし、[削除] をクリックします。
多重度の設定
次の表では、LightSwitch で利用可能な多重度の設定の組み合わせについて説明します。
From の値 |
To 値 |
説明 |
---|---|---|
単一 |
0 個または 1 個 |
「From」は「To」がないか、1 つしか持つことができませんが、「To」は 1 つの「From」を持つ必要があります。 |
単一 |
多く |
「From」は複数の「To」インスタンスを持つことができますが、「To」は 1 つの「From」を持つ必要があります。 |
0 個または 1 個 |
単一 |
「From」は 1 つの「To」を持つ必要がありますが、「To」は「From」がないか、1 つだけ持つことができます。 |
0 個または 1 個 |
多く |
「From」は複数の「To」インスタンスを持つことができますが、「To」は「From」がないか、1 つしか持つことができません。 |
多く |
単一 |
「From」は 1 つの「To」を持つ必要がありますが、「To」は複数の「From」インスタンスを持つことができます。 |
多く |
0 個または 1 個 |
「From」は「To」がないか、1 つしか持つことができませんが、「To」は複数の「From」を持つことができます。 |
[!メモ]
LightSwitch データ デザイナーを使用して、1 対 1、0 または 1 対 0 または 1、および多対多のリレーションシップを指定することはできません。
削除動作の設定
次の表では、リレーションシップにあるレコードを削除しようとしたときに生じる動作をユーザーが管理するために設定できるオプションについて説明します。いくつかのオプションは、特定の種類のリレーションシップでは利用できない可能があります。
[削除動作] 値 |
説明 |
---|---|
連鎖削除 |
「Table1」が削除された場合、関連するすべての「Table2」インスタンスを削除します。 |
Restricted |
「Table1」は、関連する「Table2」インスタンスがある場合は削除できません。 たとえば、データベースに関連する注文がある場合に、顧客を削除できないことを指定するには [制限付き] を選択します。 |
関連付けの解除 |
「Table1」が削除された場合、関連する「Table2」インスタンスでの「Table1」への参照を null に設定します。 |