次の方法で共有


方法: データ リレーションシップを定義する

データ間のリレーションシップの作成、変更、または削除は、LightSwitch のデータ デザイナーを使用して行うことができます。リレーションシップを使って、関連データが相互に作用する画面を作成できます。たとえば、顧客と注文の両方を表示する画面を作成できます。

このドキュメントは、次のセクションで構成されています。

  • 同じデータ ソースからのテーブルまたはエンティティの間でリレーションシップを追加する

  • 別のデータ ソースからのテーブルまたはエンティティの間でリレーションシップを追加する

  • リレーションシップを変更する

  • 多重度の設定

  • 削除動作の設定

ビデオへのリンク 関連のビデオ デモについては、「操作方法: LightSwitch アプリケーションでデータを定義する」を参照してください。

同じデータ ソースからのテーブルまたはエンティティの間でリレーションシップを追加する

LightSwitch データ デザイナーを使用して、LightSwitch の内部データベースの 2 つのテーブル間のリレーションシップを追加できます。場合によっては、データ デザイナーを使用して、特定の制約に従い、同じ外部データ ソースからエンティティのリレーションシップを追加することもできます。それ以外の場合は、これらのリレーションシップをサーバー上で作成して、LightSwitch でデータ接続を更新する必要があります。データ ソースへの接続を更新する方法の詳細については、「方法: データに接続する」を参照してください。

LightSwitch 内部データベース内のテーブル間にリレーションシップを追加するには

  1. ソリューション エクスプローラーで、リレーションシップで使用する予定のテーブルをどれかダブルクリックします。

  2. データ デザイナーのコマンド バーで、[リレーションシップ] をクリックします。

  3. [新しいリレーションシップの追加] ダイアログ ボックスの [名前] 行で、リレーションシップを適用する 2 つのテーブル、たとえば顧客と注文を選択します。

  4. [多重度] 行で、これらのテーブルの関連を指定します。多重度およびリレーションシップの種類の詳細については、「Multiplicity Settings」を参照してください。

  5. [削除動作] 行で、ユーザーが 1 つのテーブル内のレコードを削除しようとしたものの、そのデータが他のテーブル内の関連レコードに存在する場合、アプリケーションが行う動作を指定します。たとえば、ユーザーが顧客を削除しようとしたものの、顧客の注文がまだ存在する場合です。詳細については、「Delete Behavior Settings」を参照してください。

  6. [ナビゲーション プロパティ] 行で、すべてのナビゲーション プロパティの名前を指定します。ナビゲーション プロパティは、関連データを表示する画面の領域間を移動するユーザーに役立ちます。ナビゲーション プロパティも IntelliSense でオブジェクトとして表示され、これらのオブジェクトを使用してコードで LINQ 式を作成することができます。

  7. [OK] をクリックします。

アタッチされたデータベース内のテーブル間にリレーションシップを追加するには

  1. ソリューション エクスプローラーで、リレーションシップで使用する予定のテーブルをどれかダブルクリックします。

  2. データ デザイナーのコマンド バーで、[リレーションシップ] をクリックします。

    [新しいリレーションシップの追加] ダイアログ ボックスが開きます。

  3. [名前] 行の [宛先] 列で、リレーションシップを適用するテーブルを選択します。

    テーブルには、リレーションシップのプライマリ側で使用されるプライマリ キーが含まれている必要があります。

  4. [多重度] 行で、これらのテーブルの関連を指定します。

    詳細については、「Multiplicity Settings」を参照してください。

  5. [新しいリレーションシップの追加] の下部付近にあるデータ グリッドで、リレーションシップの [外部] の側からプロパティを選択します。

    このプロパティは [プライマリ] キー プロパティのデータ型と一致する必要があります。

    [!メモ]

    テーブルに複合主キーが含まれている場合は、すべての外部キーのデータ型が一致する必要があります。

    [!メモ]

    0 または 1 対多リレーションシップの場合、[外部] キー プロパティは必須フィールドにできません。1 対多リレーションシップの場合、[外部] キー プロパティは必須フィールドである必要があります。0 または 1 対 1 リレーションシップの場合は、リレーションシップの両側で主キーの値が使用されます。

  6. [OK] を選択します。

別のデータ ソースからのテーブルまたはエンティティの間でリレーションシップを追加する

LightSwitch データ デザイナーを使用して、別のデータ ソースからのテーブルまたはエンティティ間のリレーションシップを追加できます。たとえば、LightSwitch 内部データベースのテーブルと、SharePoint リストからのエンティティの間のリレーションシップを追加できます。

別のデータ ソースからの 2 つのテーブルまたはエンティティの間でリレーションシップを追加する

  1. ソリューション エクスプローラーで、リレーションシップで使用する予定のテーブルまたはエンティティのいずれかをダブルクリックします。

  2. データ デザイナーのコマンド バーで、[リレーションシップ] をクリックします。

  3. [新しいリレーションシップの追加] ダイアログ ボックスの [名前] 行で、リレーションシップを適用するテーブルまたはエンティティ、たとえば顧客と注文を選択します。

  4. [多重度] 行で、これらのテーブルまたはエンティティの関連を指定します。多重度およびリレーションシップの種類の詳細については、「Multiplicity Settings」を参照してください。

    [!メモ]

    [削除動作] 行はこの種のリレーションシップでは有効になっていないことに注意してください。

  5. [ナビゲーション プロパティ] 行で、すべてのナビゲーション プロパティの名前を指定します。ナビゲーション プロパティは、関連データを表示する画面の領域間を移動するユーザーに役立ちます。ナビゲーション プロパティも IntelliSense でオブジェクトとして表示され、これらのオブジェクトを使用してコードで LINQ 式を作成することができます。

  6. [新しいリレーションシップの追加] ダイアログ ボックスの下部に表示されるデータ グリッドで、1 つのテーブルまたはエンティティからプロパティを選び、他のテーブルまたはエンティティで関連プロパティを選択します。これらのプロパティは、テーブルまたはエンティティが結合される場所です。たとえば、顧客エンティティの [Id] プロパティと、注文エンティティの [CustomerID] プロパティを選択します。

  7. [OK] をクリックします。

リレーションシップを変更する

LightSwitch データ デザイナーを使用してリレーションシップを変更または削除することができます。

既存のリレーションシップを変更するには

  1. ソリューション エクスプローラーで、リレーションシップで使用しているエンティティまたはテーブルのいずれかをダブルクリックします。

  2. データ デザイナーで、別のエンティティまたはテーブルへのリレーションシップを表すナビゲーション プロパティを選択します。たとえば、顧客エンティティには、顧客と注文のリレーションシップでナビゲーション プロパティとして使用する [注文] という名前のプロパティがあるかもしれません。

  3. [プロパティ] ウィンドウで、[リレーションシップのプロパティの編集] をクリックします。

    [リレーションシップの変更] ダイアログ ボックスが表示されます。

    リレーションシップを変更するには、このドキュメントの適切なセクションを参照してください。

    • 同じデータ ソースからのエンティティの間でリレーションシップを追加する

    • 別のデータ ソースからのエンティティの間でリレーションシップを追加する

  4. [OK] をクリックします。

リレーションシップを削除するには

  1. ソリューション エクスプローラーで、リレーションシップで使用しているエンティティまたはテーブルのいずれかをダブルクリックします。

  2. データ デザイナーで、別のエンティティまたはテーブルへのリレーションシップを表すナビゲーション プロパティを右クリックし、[削除] をクリックします。

多重度の設定

次の表では、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 に設定します。

参照

その他の技術情報

データ: アプリケーションの背景情報