エンティティ リレーションシップは、エンティティ レコードを他のエンティティまたは同じエンティティのレコードに関連付ける方法を定義します。 新しいエンティティ リレーションシップを作成すると、データベースに新しいテーブル リレーションシップが作成されます。 エンティティ リレーションシップを使用して、レポートまたはユーザー インターフェイスのレコードを関連付けるために頻繁に使用される特定の関連付けを定義します。 リレーションシップが存在したら、 Associate
メソッドと Disassociate
メソッドを使用して、リレーションシップに基づいてレコードを関連付け、関連付けを解除できます。 詳細情報: エンティティ レコードに対するアクション
正式で柔軟性の低い個々のレコード間のリレーションシップについては、「 接続エンティティ」を参照してください。
このトピックでは、プログラムによるエンティティリレーションシップの操作について説明します。 アプリケーションでのエンティティ リレーションシップの操作については、「エンティティ リレーションシップの 作成と編集」を参照してください。
エンティティ リレーションシップの種類
Dynamics 365 Customer Engagement (オンプレミス) には、2 種類のエンティティリレーションシップが用意されています。 これらの両方が、 RelationshipMetadataBase クラスから継承されます。
-
プログラムによって新しいエンティティリレーションシップを作成する前に、エンティティがリレーションシップに参加する資格があるかどうかを確認します。 エンティティリレーションシップには、
EntityMetadata
、CanBeInManyToMany
、およびCanBePrimaryEntityInRelationship
のCanBeRelatedEntityInRelationship
プロパティを使用する制約があります。 これらの制限は、カスタマイズ ツールでエンティティリレーションシップを手動で作成するときに考慮されます。 エンティティが使用できるリレーションシップと、その種類のリレーションシップに対して有効な他のエンティティを決定するために使用できるメッセージがあります。 詳細情報: エンティティ・リレーションシップの適格性どちらの種類のエンティティ リレーションシップでも、関連レコード間のナビゲーション リンクを表示するオプションを使用できます。 詳細情報: 関連メニューの構成
一対多関連付け
一対多エンティティリレーションシップでは、多くの参照 (関連) エンティティ レコードを 1 つの参照先 (プライマリ) エンティティ レコードに関連付けることができます。 参照されるエンティティ レコードは "親" と呼ばれる場合があり、参照元エンティティのレコードは "子" と呼ばれます。
ソリューション ページのエンティティ ノードでは、この種のエンティティリレーションシップは 、1 対多 (1:N) リレーションシップ または 多対 1 (N:1) リレーションシップとして表示されます。 これらの用語は、エンティティの 1 つを介してエンティティのリレーションシップに移動するため使用されます。 ラベルには、現在のエンティティがリレーションシップに持つロールが反映されます。
注
Web API を使用して 1:N リレーションシップを作成する方法については、「Web API: 一対多リレーションシップを作成する」を参照してください。
Organization Service では、この種のエンティティリレーションシップを操作するときに、 OneToManyRelationshipMetadata クラスのインスタンスを使用します。 各エンティティリレーションシップには、取得に使用する一意のスキーマ名があります。 詳細については、SchemaNameを参照してください。 この種の各エンティティリレーションシップには、参照先の属性を持つ参照先エンティティ (プライマリ エンティティ) と、参照元の属性を持つ参照エンティティ (関連エンティティ) もあります。 参照属性は、エンティティ フォームのルックアップ フィールドとして表示できます。 詳細については、次を参照してください。
Web API | SDKアセンブリ |
---|---|
OneToManyRelationshipMetadata EntityType・ReferencedEntity | ReferencedEntity |
OneToManyRelationshipMetadata EntityType。ReferencedAttribute | ReferencedAttribute |
OneToManyRelationshipMetadata EntityType。ReferencingEntity | ReferencingEntity |
OneToManyRelationshipMetadata EntityTypeのReferencingAttribute | ReferencingAttribute |
参照元の属性に対して、AttributeRequiredLevel
列挙型 (AttributeRequiredLevel EnumType または AttributeRequiredLevel 列挙型) を ApplicationRequired
に設定することで、参照元エンティティが参照を有する必要が生じる場合があります。 データの整合性を維持するには、この操作を行うときに、プライマリ レコードが削除された場合に発生する内容も指定する必要があります。
OneToManyRelationshipMetadata.CascadeConfiguration
プロパティを使用して、プライマリ レコードの削除を禁止するか、関連レコードを自動的に削除して、孤立したレコードを防ぎます。
また、カスケード構成を使用して、組織内の関連レコードに対して特定のアクションが実行された場合の動作を自動化することもできます。 詳細情報: エンティティリレーションシップの動作
新しいレコードにデータをマップする
一対多エンティティリレーションシップがある場合は、参照先エンティティ内の特定のフィールドのデータを、リレーションシップのコンテキストで作成された新しい関連レコードに転送できるように指定できます。 これにより、新しい関連レコードを作成するときに、データ入力を効率化できます。 詳細については、「 エンティティマッピングと属性マッピング」を参照してください。
一対多エンティティのリレーションシップを自己参照する
自己参照リレーションシップは、参照元エンティティと参照先エンティティが同じである場所です。 たとえば、アカウント エンティティには自己参照の一対多リレーションシップがあり、 親アカウントという名前のルックアップが可能です。 エンティティリレーションシップの動作が Parental として定義されている場合、連鎖動作が適用されると循環参照が作成されるため、レコード自体を参照することはできません。 詳細情報: エンティティリレーションシップの動作
階層的な一対多エンティティのリレーションシップ
Dynamics 365 Customer Engagement (オンプレミス) では、エンティティの指定された階層リレーションシップとして、1 つの自己参照型の一対多エンティティリレーションシップを指定できます。
OneToManyRelationship.IsHierarchical
プロパティ (OneToManyRelationship.IsHierarchical または OneToManyRelationshipMetadata.IsHierarchical) は、エンティティに使用する一対多リレーションシップとしてこのリレーションシップにフラグを設定します。
すべての一対多エンティティ リレーションシップは階層の種類を表しますが、 IsHierarchical
プロパティを使用して明示的にフラグが設定されたリレーションシップは、階層的に関連するレコードを取得するための新しいクエリ演算子だけでなく、アプリケーションの階層の視覚化をサポートする唯一のエンティティ リレーションシップです。 詳細情報: 階層データのクエリ
Web API ナビゲーション プロパティの名前を変更する
一対多リレーションシップにカスタム Web API ナビゲーション プロパティ名を適用する場合は、 OneToManyRelationshipMetadata.ReferencingEntityNavigationPropertyName
プロパティと OneToManyRelationshipMetadata.ReferencedEntityNavigationPropertyName
プロパティの値を設定できます。
多対多関連付け
多対多エンティティリレーションシップでは、多くのエンティティ レコードを他の多くのエンティティ レコードに関連付けることができます。 一対多リレーションシップとは異なり、どちらのエンティティにもルックアップ フィールドがないため、意図した階層はありません。 多対多リレーションシップにより関連付けられたレコードは同等と見なされ、このリレーションシップは相互関係になります。 多対多リレーションシップは、自己参照型の場合もあります。 多対多リレーションシップには連鎖動作がないため、個々のレコードにそれ自体への参照を許可できます。
注
N:N リレーションシップを作成するための Web API の使用方法については、「Web API を使用して多対多 リレーションシップを作成する」を参照してください。
この種のエンティティリレーションシップを操作するときは、 ManyToManyRelationshipMetadata
(ManyToManyRelationshipMetadata EntityType または ManyToManyRelationshipMetadata クラス) のインスタンスを使用します。 各エンティティリレーションシップには、取得に使用する一意の RelationshipMetadataBase.SchemaName
があります。
多対多エンティティリレーションシップを作成すると、 EntityMetadata.IsIntersect
プロパティが true である新しい交差エンティティが作成されます。 このエンティティに関するレコードは、個々の多対多の関係を追跡します。 交差するエンティティにカスタム属性を追加することはできません。
Web API ナビゲーション プロパティの名前を変更する
多対多リレーションシップにカスタム Web API ナビゲーション プロパティ名を適用する場合は、 ManyToManyRelationshipMetadata EntityType の値を設定できます。Entity1NavigationPropertyName と ManyToManyRelationshipMetadata EntityType。Entity2NavigationPropertyName プロパティ。
関連付けられているメニューを構成する
どちらの種類のエンティティ リレーションシップでも、関連レコード間のナビゲーション リンクを構成できます。 エンティティ フォームのナビゲーション リンクを表示する方法を指定するには、エンティティ リレーションシップ定義の各種類の Metadata.AssociatedMenuConfiguration
プロパティを使用します。
これらの値は、リレーションシップの既定の構成を提供します。 フォーム エディターを使用して、各フォームのこれらのオプションをオーバーライドできます。 詳細情報: フォーム内のナビゲーションを変更する
Behavior
次のオプションを提供します。
DoNotDisplay
ユーズコレクションネーム
ラベルを使用する
Group
次のオプションを提供します。詳細
Marketing
Sales
サービス
新しいグループを追加することはできませんが、表示されるテキストはフォーム エディターを使用して変更できます。
ラベル
AssociatedMenuBehavior.UseLabel
を選択した場合は、カスタム ラベルを指定する必要があります。命令
順序に指定された整数は、グループ内のナビゲーション項目の相対位置を制御します。 値が小さいほど、グループ内の他の項目の値に対して、その項目の順位が高く表示されます。
こちらも参照ください
Web API を使用してエンティティ リレーションシップを作成および更新する
Dynamics 365 Customer Engagement のメタデータ モデルを拡張する (オンプレミス)
エンティティ関係メッセージ
エンティティ関係の適格性
エンティティリレーションシップの動作
エンティティリレーションシップの作成
サンプル: エンティティ リレーションシップを作成する
サンプル: エンティティリレーションシップ情報をファイルにダンプする
エンティティと属性のマッピング
交差エンティティを使用して多対多リレーションシップのレコードを検索する