エンティティ関係メタデータをカスタマイズする

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

エンティティ関係によって、エンティティ レコードを他のエンティティや同じエンティティのレコードと関連付けることのできる方法が定義されます。 新しいエンティティ関係を作成すると、データベース内に新しいテーブル関係が作成されます。 レコードをレポートに対して関連付けたり、ユーザー インターフェイス内で関連付けたりするために頻繁に使用される個別的な関連付けを定義するには、エンティティ関係を使用します。 エンティティ関係を作成した後は、Associate メソッドと Disassociate メソッドを使用して、その関係に基づいてレコードを関連付けたり、関連付けを解除したりすることができます。詳細:エンティティ レコードに対する操作

あまりフォーマルでない柔軟性の高い個々のレコード間の関連付けについては、「つながりエンティティ」を参照してください。

このトピックでは、エンティティの関連付けをプログラムで行う方法について説明します。 アプリケーションのエンティティの関連付けの方法の詳細については、「エンティティ関係の作成および編集」を参照してください。

このトピックの内容

エンティティ関係の種類

一対多関連付け

多対多関連付け

関連したメニューを構成する

エンティティ関係の種類

Microsoft Dynamics 365 には、2 種類のエンティティ関係が用意されています。 どちらも RelationshipMetadataBase クラスから継承されます。

  • 一対多関連付け

  • 多対多関連付け

新しいエンティティ関係をプログラムで作成する前に、それらのエンティティがその関連付けにふさわしいかどうかを確認してください。 次の EntityMetadata プロパティを使用するエンティティの関連付けには適用された制約があります: CanBeInManyToManyCanBePrimaryEntityInRelationship、および CanBeRelatedEntityInRelationship。 これらの制約は、カスタマイズ ツールでエンティティ関係を手動で作成する際に考慮されます。 エンティティがどの関連付けを使用するか、関係のこの種類に対して他のどのエンティティが有効であるかを判断するのに使用できるメッセージがあります。詳細:エンティティの関連付けの有効性

どちらの種類のエンティティ関係にも、関連するレコード間のナビゲーション リンクを表示するオプションがあります。詳細:関連したメニューを構成する

一対多関連付け

一対多エンティティ関係では、多くの参照元 (関連) エンティティ レコードを単一の参照先 (主) エンティティ レコードと関連付けることができます。 参照先エンティティ レコードは "親" と呼ばれ、参照元エンティティのレコードは "子" と呼ばれることがあります。

ソリューション ページ上のエンティティ ノード内では、この種類のエンティティ関係は [一対多 (1:N) の関連付け] または [多対一 (N:1) の関連付け] として表示されます。 これらの用語が使用されるのは、それらのエンティティのいずれかを通じてエンティティ関係に移動するからです。 ラベルは現在のエンティティがその関係の中で持っているロールを反映します。

この種類のエンティティ関係を扱うときは、OneToManyRelationshipMetadata クラスのインスタンスを使用します。 各エンティティ関係は一意のスキーマ名を持ちます。エンティティ関係を取得するときは、その名前を使用します。 詳細については、「SchemaName」を参照してください。 この種類の各エンティティ関係は、参照先エンティティ (主エンティティ) と参照先属性、および参照元エンティティ (関連エンティティ) と参照元属性も持ちます。 参照元属性はエンティティ フォーム内に検索フィールドとして表示できます。 詳細については、「ReferencedEntity, ReferencedAttributeReferencingEntity、および ReferencingAttribute」を参照してください。

参照元属性で AttributeRequiredLevelApplicationRequired に設定することにより、参照元エンティティに必ず参照を持たせるようにすることがあります。 データ整合性を維持するため、これを行うときは、主レコードが削除された場合に何を行うかを指定する必要があります。CascadeConfiguration プロパティを使用することにより、主レコードの削除を防止するか、または孤立した (親のない) レコードが生じないように自動的に関連レコードも削除するようにしてください。

組織の関連するレコードに対して特定の操作が実行されるときの動作を自動化するためにカスケード構成を使用できます。詳細:エンティティ関係の動作

データを新しいレコードにマップする

一対多のエンティティ関係が存在する場合、参照先エンティティ内の特定のフィールドのデータを、その関係のコンテキストで作成された任意の新しい関連レコードに転送できることを指定できます。 これにより、新しい関連レコードを作成するときのデータ入力を合理化できます。 詳細については、「エンティティ マッピングおよび属性マッピングのカスタマイズ」を参照してください。

自己参照型の一対多エンティティ関係

自己参照型の関連付けが生じるのは、参照元エンティティと参照先エンティティが同じ場合です。 たとえば、取引先企業 (アカウント) エンティティは、[取引先企業の親会社] というラベルの検索を可能にする自己参照型の一対多関連付けを持っています。 エンティティ関係の動作が [上位下位] として定義されている場合、レコードで自分自身を参照することはできません。なぜなら、自分自身を参照すると、伝播 (カスケード) 動作が適用されたときに循環参照が発生するからです。詳細:エンティティ関係の動作

階層一対多エンティティの関連付け

Microsoft Dynamics 365 (オンラインおよび設置型)では、エンティティの指定された階層関連付けとして、1 つの自己参照の一対多エンティティの関連付けを指定できます。OneToManyRelationshipMetadata.IsHierarchical プロパティは、エンティティで使用する一対多の関連付けとしてこの関連付けにフラグを設定します。

すべての一対多エンティティの関連付けは、階層の種類を表しますが、IsHierarchical を使用して明示的にフラグを設定された関連付けは、階層的に関連するレコードを取得する新しいアプリケーション クエリ演算子とアプリケーションで階層のビジュアル化をサポートするエンティティの関連付けのみです。詳細:クエリ階層型データ

Web API ナビゲーション プロパティ名の変更

一対多の関連付けにカスタム Web API ナビゲーション プロパティ名を使用する場合は、OneToManyRelationshipMetadataReferencingEntityNavigationPropertyName Property および ReferencedEntityNavigationPropertyName Property プロパティの値を設定きます。

多対多関連付け

多対多エンティティ関係では、多数のエンティティ レコードを他の多数のエンティティ レコードと関連付けることができます。 一対多のエンティティ関係と違って、どちらのエンティティにも検索フィールドがなく、したがって対応する階層がありません。 多対多の関連付けを使用して関連付けられたレコードは同等であると考えられ、この関係は相互的なものです。 多対多の関連付けを自己参照にすることもできます。 多対多の関連付けには伝播 (カスケード) 動作がないので、個別のレコードで自分自身を参照することができます。

この種類のエンティティ関係を扱うときは、ManyToManyRelationshipMetadata クラスのインスタンスを使用します。 各エンティティ関係は一意の SchemaName を持ちます。エンティティ関係を取得するときは、これを使用します。

多対多のエンティティ関係を作成すると、IsIntersect プロパティが true の場合は新しい交差エンティティが作成されます。 このエンティティのレコードは個別の多対多関連付けを追跡します。 交差エンティティにはカスタム属性を追加できません。

Web API ナビゲーション プロパティ名の変更

多対多の関連付けにカスタム Web API ナビゲーション プロパティ名を使用する場合は、ManyToManyRelationshipMetadataEntity1NavigationPropertyName Property および Entity2NavigationPropertyName Property プロパティの値を設定きます。

関連したメニューを構成する

どちらの種類のエンティティ関係でも、関連レコード間のナビゲーション リンクを構成できます。 それぞれの種類のエンティティ関係定義で AssociatedMenuConfiguration のプロパティを使用して、エンティティ フォーム内でのナビゲーション リンクの表示方法を指定できます。

これらの値は、関連付けの既定の構成として使用されます。 フォーム エディターを使用すると、これらのオプションをフォームごとに上書きできます。詳細:TechNet: フォーム エディターの使用: ナビゲーションの編集

  • Behavior
    次のオプションがあります。

    • DoNotDisplay

    • UseCollectionName

    • UseLabel

  • Group
    次のオプションがあります。

    • [詳細]

    • マーケティング

    • 営業

    • サービス

    新しいグループを追加することはできませんが、フォーム エディターを使用して、グループに対して表示されるテキストを変更することはできます。

  • ラベル
    AssociatedMenuBehavior.UseLabel を選択した場合、カスタム ラベルを指定する必要があります。

  • 受注
    指定した整数値によって、グループ内でのナビゲーション項目の相対位置が制御されます。 値が小さいほど、グループ内の他の項目に対するその項目の相対的な表示位置が上がります。

関連項目

Dynamics 365 メタデータと共に組織サービスを使用する
エンティティの関連付けのメタデータ メッセージ
エンティティの関連付けの有効性
エンティティ関係の動作
エンティティ関係の作成および取得
サンプル: エンティティ関係の作成および取得
サンプル: エンティティ関係情報のファイルへのダンプ
エンティティ マッピングおよび属性マッピングのカスタマイズ
交差するエンティティを使用した多対多の関連付けのためのレコードの取得

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権