次の方法で共有


エンティティ間に 1:N (一対多) リレーションシップを作成する

このトピックは、Dynamics 365 Customer Engagement (on-premises) に適用されます。 このトピックの Power Apps バージョンについては、以下を参照してください。 Power Apps ポータルを使用して一対多または多対一のエンティティリレーションシップを作成および編集する

1:N リレーションシップを作成する最も簡単な方法は、エンティティの新しいルックアップ フィールドを作成することです。 これにより、ルックアップ フィールドの共通フィールド値と、[ 種類 ] を [ルックアップ ] に設定するときに追加の 2 つのオプションを設定できます。 これらの追加フィールドは、 ターゲット レコードの種類リレーションシップ名です

[ターゲット レコードの種類] では、1:N リレーションシップの プライマリ エンティティ が選択されます。 リレーションシップ名 は、リレーションシップに参加する 2 つのエンティティに基づいて自動生成されます。 通常、これを編集する必要はありませんが、必要に応じて編集できます。 エンティティリレーションシップの名前には、現在作業中のソリューションのソリューションパブリッシャーのカスタマイズ プレフィックスが含まれています。

カスタマイズ プレフィックスが気になる場合は、ソリューションパブリッシャーにリンクされているソリューションのコンテキスト内で、必要なプレフィックスを使用して作業していることを確認してください。

ただし、ルックアップ フィールドを作成して 1:N リレーションシップを作成すると、特定の既定値が設定されます。 リレーションシップで使用できるオプションの一部を編集する場合は、リレーションシップを見つけて編集する必要があります。

すべてのエンティティに対してカスタム 1:N リレーションシップを作成することはできません。 これが当てはまる場合、ソリューション エクスプローラーを使用して新しいカスタム エンティティリレーションシップを作成するオプションはありません。 メタデータ ブラウザーを使用する場合は、 CanBePrimaryEntityInRelationship プロパティと CanBeRelatedEntityInRelationship プロパティに従ってエンティティの一覧をフィルター処理できます。

1:N リレーションシップの定義には、 リレーションシップ定義ルックアップ フィールドプライマリ エンティティのナビゲーション ウィンドウ 項目リレーションシップの動作の 4 つの部分があります。

1:N エンティティリレーションシップ。

エンティティ間の 1:N リレーションシップを作成または編集する

  1. ソリューション エクスプローラーを開きます。

  2. [コンポーネント][エンティティ] を展開し、操作するエンティティを展開します。

  3. [1:N リレーションシップ] を選択します

  4. リレーションシップを編集したり、リレーションシップの詳細を表示したりするには、リレーションシップを選択し、[アクション] ツールバーで [ その他のアクション] を選択し、[ 編集] を選択します。

    -又は-

    新しいリレーションシップを追加するには、[ 新しい 1 対多リレーションシップ] を選択します。

    Important

    [アクション] ツールバー に新しい 1 対多リレーションシップ が表示されない場合、そのエンティティに対して 1:N リレーションシップを作成することはできません。

  5. 新しいリレーションシップの場合、[ リレーションシップ定義 ] セクションの [ 関連エンティティ ] ボックスの一覧で、関連するエンティティを選択します。

    関連エンティティを指定すると、[ 名前] フィールドの既定値が設定されます。 保存する前に関連エンティティを変更すると、[ 名前] の値が適宜変更されます。

  6. これが検索可能かどうかを選択します。

  7. [ ルックアップ フィールド] セクションで、[ 表示名 ] フィールドの値を指定します。

    Important

    表示名を指定すると、[名前] フィールドの既定値が設定されます。 保存する前にルックアップ フィールドの 表示名 を変更しても、[ 名前 ] フィールドの値は変更されません。 その結果、保存する前に Name が意味を持っていることを確認してください。

  8. フィールド要件リストで、レコードを保存する前にフィールドのデータ要件を指定するオプションを選択します。

  9. [ 主エンティティのナビゲーション ウィンドウ項目] セクションの [表示オプション ] ボックスの一覧で、関連付けられているビューまたはカスタム ラベルを表示するためのオプションを選択します。

  10. [ リレーションシップの動作 ] セクションの [ 動作の種類 ] の一覧で、次のいずれかのオプションを選択します。

    • 保護者の方。 2 つのテーブル間のペアレンタル リレーションシップでは、親テーブルのレコードに対して実行されるアクションは、プライマリ (または親) テーブル レコードに関連するすべての子テーブル レコードに対しても実行されます。 たとえば、親レコードの所有者が子テーブル レコードへのアクセス権を継承しており、親レコードが削除されると、すべての子レコードも削除されます。 親テーブル (P1) と子エンティティ (C1) の間の 1:N ペアレンタルリレーションシップの場合、P1 レコードの所有者には C1 子レコードへの継承アクセス権が付与されます。

    • 参照。 2 つのエンティティ間の参照関係では、関連するレコードに移動できますが、1 つのエンティティに対して実行されるアクションはもう一方には影響しません。

    • 参照、削除の制限。 参照では、2 つのエンティティ間の削除リレーションシップを制限し、関連するすべてのレコードに移動できます。 親レコードに対して実行されたアクションは子レコードには適用されませんが、子レコードが存在する間は親レコードを削除できません。 関連レコードが存在する場合は、レコードを削除できないことに注意してください。

    • 構成可能なカスケード。 2 つのエンティティ間の構成可能なカスケードリレーションシップでは、可能な一連の各アクションに関連付けられている動作を選択します。

      Important

      別の動作の種類に関連付けられているアクションの動作と一致するようにアクション 動作を設定した場合、リレーションシップを保存すると、 動作の種類 が一致する型に自動的に設定されます。

詳細情報: エンティティリレーションシップの動作を構成する

  1. [ 保存] と [閉じる] を選択して、[ リレーションシップ ] フォームを閉じます。

  2. カスタマイズが完了したら、公開します。

    • 現在編集しているコンポーネントのみのカスタマイズを発行するには、[アクション] ツールバーの [ 発行] を選択します。

    • 発行されていないすべてのコンポーネントのカスタマイズを一度に発行するには、ナビゲーション バーまたはナビゲーション ウィンドウで [ エンティティ] を選択し、[アクション] ツールバーで [ すべてのカスタマイズの発行] を選択します。

  • カスタム エンティティを、連鎖する関連システム エンティティとのリレーションシップのプライマリ エンティティにすることはできません。 つまり、プライマリ カスタム エンティティと関連システム エンティティの間に、Cascade All、Cascade Active、または Cascade User-Owned に設定されたアクションとのリレーションシップを持つことはできません。
  • リレーションシップ内の関連エンティティが、Cascade All、Cascade Active、または Cascade User-Owned に設定されている別のリレーションシップの関連エンティティとして既に存在し、そのアクションが Cascade All、Cascade Active、または Cascade User Owned に設定されている場合は、新しいリレーションシップでアクションを Cascade AllCascade Active、または Cascade User Owned に設定することはできません。 これにより、複数親リレーションシップを作成するリレーションシップが防止されます。
  • ユーザー インターフェイス要素を変更したり、エンティティのフォーム スクリプトを実装したりするたびに、変更を発行して適用する必要があります。 カスタム エンティティ、リレーションシップ、フィールドなど、アプリのデータ スキーマを変更するカスタマイズは直ちに適用されます。
  • リレーションシップがマネージド ソリューションの一部である場合、マネージド ソリューションの開発者はリレーションシップのカスタマイズを制限できます。
  • ソリューションをインストールまたはカスタマイズを公開すると、標準システム操作を妨げる可能性があります。 ソリューションのインポートは、ユーザーへの影響が最小限に留まるようにスケジューリングすることを推奨します。

リレーションシップの定義

ソリューション エクスプローラーから 新しい 1 対多リレーションシップまたは新しい多1 リレーションシップ のどちらを作成するかを選択した場合、 プライマリ エンティティ フィールドまたは 関連エンティティ フィールドが事前に設定されます。 必要なのは、もう 1 つを選択することだけです。 [名前] フィールドの既定値は、ソリューション発行元のカスタマイズ プレフィックスと、リレーションシップに参加することを選択したエンティティの名前に基づいて事前に設定されます。 必要に応じて、これを編集できます。 2 つのエンティティ間に複数のカスタム リレーションシップを作成し、両方に同じカスタマイズ プレフィックスを使用する場合、自動生成された名前の値は一意ではなく、新しいリレーションシップを保存することはできません。 保存する前に、名前を編集して既存の名前と区別する必要があります。 一度保存すると、変更することはできません。

このエンティティリレーションシップを [高度な検索] に表示しない場合は、[ 検索可能] の値を [いいえ] に設定します。

ルックアップ フィールド

これらのフィールドは、 検索可能フィールド セキュリティ、監査を除くすべてのフィールドに共通 プロパティです。 エンティティ リレーションシップで作成されたルックアップ フィールドのこれらの値を編集するには、エンティティ リレーションシップを作成した後でルックアップ フィールドを個別に検索して編集する必要があります。 詳細: フィールドの作成と編集

一般的なルールとして、 表示名 はプライマリ エンティティの表示名に対応している必要があります。

ナビゲーション ウィンドウを展開すると、プライマリ エンティティで関連エンティティの一覧を表示できます。 このグループのオプションは、このリストを表示する方法と表示するかどうかを制御します。 これらのナビゲーション 項目は、フォーム エディターを使用して編集することもできます。また、JavaScript を使用すると、開発者はフォームが表示されたときにこれらの項目に変更を適用できます。

フィールド Description
表示オプション - 表示しない: 関連するエンティティ レコードの一覧にユーザーが移動できないようにする場合は、これを選択します。
- カスタム ラベルを使用する: 使用するカスタム ラベルを指定する場合は、これを選択します。
- 複数形の名前を使用する: 関連エンティティの複数形名をラベルとして使用する場合は、これを選択します。
カスタム ラベル 表示オプションとして [カスタム ラベルを使用 ] を選択した場合は、関連するエンティティの複数形名の代わりに使用するカスタム ラベルを入力します。
表示領域 - 詳細: [ 共通 ] グループにナビゲーション項目を含めるには、これを選択します。
- マーケティング: これを選択すると、ナビゲーション項目が マーケティング グループに含まれます。
- Sales: これを選択すると、ナビゲーション項目が Sales グループに含まれます。
- サービス: サービスグループに ナビゲーション 項目を含めるには、これを選択します。
表示順序 この番号は、ナビゲーション項目が選択した表示領域内のどこに含まれるかを制御します。 使用できる数値の範囲は 10,000 から始まります。 値が小さいナビゲーション ウィンドウ項目は、値が大きい他のリレーションシップの上に表示されます。

リレーションシップの動作

1:N リレーションシップでは、組織のビジネス ルールをサポートするためにリレーションシップの動作を制御できます。 なぜこれを行う必要がありますか? 例を見てみましょう。

たとえば、新しい営業担当者がいて、現在別の営業担当者に割り当てられている既存の営業案件を多数割り当てるとします。 各営業案件レコードには、多数のタスク アクティビティが関連付けられている場合があります。 再割り当てするアクティブな営業案件を簡単に見つけて、新しい営業担当者に割り当てることができます。 しかし、営業案件に関連付けられているタスク アクティビティに対して何を行う必要がありますか? 各タスクを開き、新しい営業担当者にも割り当てる必要があるかどうかを決定しますか? たぶんそうじゃないです。 代わりに、リレーションシップに一部の標準ルールを自動的に適用させることができます。 これらのルールは、再割り当てする営業案件に関連付けられているタスク レコードにのみ適用されます。 エンティティリレーションシップの名前は Opportunity_Tasks です。 オプションは次のとおりです。

  • アクティブなすべてのタスクを再割り当てします。

  • すべてのタスクを再割り当てします。 これが既定の動作です。

  • タスクを再割り当てしません。

  • 現在割り当てられているすべてのタスクを、営業案件の前の所有者に再割り当てします。

    このリレーションシップでは、プライマリ エンティティ レコードのレコードに対して実行されるアクションを、関連するエンティティ レコードに連鎖させる方法を制御できます。 アクションと考えられる動作を次の表に示します。

アクション Description 考えられる動作
割り当てる プライマリ エンティティ レコードが所有権を変更した場合はどうなりますか? - カスケードアクティブ
- すべてカスケード
- Cascade None
- Cascade User Owned
共有 プライマリ エンティティ レコードが共有されている場合はどうなりますか? - カスケードアクティブ
- すべてカスケード
- Cascade None
- Cascade User Owned
共有を解除する プライマリ エンティティ レコードの共有が停止した場合はどうなりますか? - カスケードアクティブ
- すべてカスケード
- Cascade None
- Cascade User Owned
親の再親 プライマリ エンティティ レコードのペアレンタル型リレーションシップのルックアップ フィールド値が変更された場合はどうなりますか?

ペアレンタル型リレーションシップは、すべてのアクションに Cascade All を使用するリレーションシップです。 - カスケードアクティブ
- すべてカスケード
- Cascade None
- Cascade User Owned
削除 プライマリ エンティティ レコードが削除されるとどうなりますか? - すべてカスケード
- リンクの削除
- 削除の制限
マージ プライマリ エンティティ レコードが別のレコードとマージされた場合はどうなりますか? - すべてカスケード
- Cascade None

これらの各アクションは、アクションが 1:N エンティティリレーションシップを介してプライマリ エンティティ レコードに関連するレコードにカスケードダウンする方法を制御するように構成できます。 動作オプションを次の表に示します。

行動 Description
アクティブなカスケード アクティブなすべての関連エンティティ レコードに対してアクションを実行します。
すべてカスケード 関連するすべてのエンティティ レコードに対してアクションを実行します。
Cascade None 遊ぶ。
リンクの削除 関連するすべてのエンティティ レコードのルックアップ フィールドの値を削除します。
削除の制限 関連レコードが存在する場合に、プライマリ エンティティ レコードが削除されないようにします。
Cascade User Owned プライマリ エンティティ レコードと同じユーザーが所有するすべての関連エンティティ レコードに対してアクションを実行します。

リレーションシップ内でこれらのアクションを適用する方法は、次の表で説明する [動作の種類 ] フィールドの値を使用して分類または適用できます。

フィールド値 Description
ペアレンタル すべてのアクションで[ すべてカスケード ]動作が使用されます。

参照 [割り当て]、[ 共有]、[ 共有解除]、[ 再親 ] では、 Cascade None 動作を使用します。

削除 では、 リンクの削除 動作が使用されます。

マージ では、 すべてカスケード 動作が使用されます。
参照、削除の制限 参照と同じですが、削除では削除の制限動作が使用されます。
構成可能なカスケード アクションごとに個別の動作を割り当てることができます。 選択肢が他の [動作の種類 ] カテゴリのいずれかと一致する場合、値はその [動作の種類] の値に変わります。

設定できる動作に関する制限事項

エンティティリレーションシップを定義する際には、いくつかの制限事項に留意する必要があります。

  • カスタム エンティティを、連鎖する関連システム エンティティとのリレーションシップのプライマリ エンティティにすることはできません。 つまり、プライマリ カスタム エンティティと関連システム エンティティの間に、 Cascade AllCascade Active、または Cascade User Owned に設定されたアクションとのリレーションシップを持つことはありません。

  • リレーションシップ内の関連エンティティが、Cascade All、Cascade Active、または Cascade User-Owned に設定されている別のリレーションシップの関連エンティティとして既に存在し、そのアクションが Cascade All、Cascade Active、または Cascade User Owned に設定されている場合は、新しいリレーションシップでアクションを Cascade AllCascade Active、または Cascade User Owned に設定することはできません。 これにより、複数親リレーションシップを作成するリレーションシップが防止されます。

  • マージ時のカスケードは設定または変更できません。また、参照先エンティティに依存します。 参照先エンティティがアカウント、連絡先、または潜在顧客の場合、アクションは連鎖します。 それ以外の場合は実行されません。

こちらも参照ください

N:N (多対多) リレーションシップを作成する