次の方法で共有


テーブルと列マッピングをカスタマイズする

リレーションシップを持つテーブル間で列をマップできます。 これにより、別のレコードのコンテキストで作成されたレコードの既定値を設定できます。 アプリケーションのカスタマイズ ツールを使用してテーブルをマップする。「 列のマップ」を参照してください。

アプリケーションでの動作

Microsoft Dataverse でのマッピングは、別のレコードに関連付けられている新しいレコードを作成するときに、データ入力を効率化します。 テーブルに別のテーブルとのリレーションシップがある場合は、リボンの [関連レコードの作成] タブを使用して、新しい関連レコードを 作成 できます。 この方法で新しいレコードを作成すると、プライマリ レコードのマップされたデータが、新しい関連レコードのフォームにコピーされます。 テーブル列をマッピングすることで、2 つのテーブル間のリレーションシップに新しいマッピングを追加することで、コピーするデータを制御できます。 プライマリ テーブルの関連付けられたビュー以外の方法でレコードを作成した場合、データはマップされません。

たとえば、取引先企業の住所列と連絡先の住所列とのマッピングを設定できます。 このマッピングでは、ユーザーが特定のアカウントに関連付けられている連絡先を追加すると、連絡先のアドレス列が自動的に設定されます。

1 つの列を複数のターゲット列にマップできます。 たとえば、アカウント内の住所情報を注文の請求先住所と配送先住所の両方にマップできます。

マッピングは、新しい関連レコードが作成される前に適用されます。 ユーザーは、レコードを保存する前に変更を加えることができます。 プライマリ レコード内のデータに対する後の変更は、関連レコードには適用されません。

テーブルと列のマッピング データの使用

Web API の使用

Web API を使用する場合は、 InitializeFrom 関数 を使用して、テーブル間にマッピングが存在する既存のレコードのコンテキストで新しいレコードを作成できます。

InitializeFrom 要求から受信した応答は、ソース テーブルとターゲット テーブルの間のマップされた列の値と親レコードの GUID で構成されます。 リレーションシップを持つテーブル間の列マッピングは、テーブル セットごとに異なり、カスタマイズ可能であるため、InitializeFrom 関数要求からの応答は、テーブルや組織によって異なる場合があります。 この応答が新しいレコードの作成要求の本文で渡されると、これらの列の値が新しいレコードにレプリケートされます。 カスタム マップ列の値も、プロセス中に新しいレコードに設定されます。

2 つのテーブルをマップできるかどうかを判断するには、次の Web API 要求を使用します。
GET [Organization URI]/api/data/v9.0/entitymaps?$select=sourceentityname,targetentityname&$orderby=sourceentityname

詳細については、「 別のレコードから新しいレコードを作成する」を参照してください。

SDK for .NET の使用

テーブル間にマッピングが存在する既存のレコードのコンテキストで新しいレコードを作成する場合は、 InitializeFromRequest メッセージを使用して、マッピングで指定された値を含む新しいレコードを定義できます。 その後、 IOrganizationServiceを使用できます。 Create メソッドを使用してレコードを保存します。 この方法では、定義したマッピングが適用されます。

有効なテーブル マップは、リレーションシップの作成時に作成されます。 entity_map_attribute_maps リレーションシップを使用して、テーブル マップで指定されたテーブルのペアの列マップを取得します。
列マップ レコードを作成または更新できます。 列マップでは、次の要件を満たす必要があります。

  • AttributeMetadata型が一致している必要があります。
  • ターゲット列の長さをソース列よりも短くすることはできません。
  • 形式は一致する必要があります。
  • ターゲット列を別のマッピングで使用することはできません。
  • ソース列はフォームに表示されている必要があります。
  • ターゲット列は、ユーザーがデータを入力できるフィールドである必要があります。
  • アドレス ID 値をマップできません。
  • PartyList 列で、AttributeMetadata.AttributeTypeAttributeTypeCode なので、PartyList はマップできません。

テーブル間の列の自動マッピング

マッピングをサポートするリレーションシップのテーブル間の列マッピングを編集できます。

各列マップを手動で作成するだけでなく、 AutoMapEntity メッセージ (AutoMapEntity Action または AutoMapEntityRequest クラス) を使用して、列マッピングの新しいセットを生成できます。 このメッセージは、ツール バーの [その他のアクション] メニューの [マッピングの生成] メニュー オプションにあるアクションを実行します (列マッピングの自動生成を参照)。 このメッセージは、列名と型が同じ 2 つの関連テーブル間のすべての列をマップします。 このメッセージは、すべての列マッピングを手動で追加する必要がないように、生産性の向上として提供されます。 代わりに、一連のマッピングを生成し、要件を満たすために個々のマッピングを追加または削除する手動作業の量を最小限に抑えることができます。

この方法でマッピングを自動的に生成すると、以前に定義された列マッピングが削除され、不要なマッピングが含まれる場合があります。

テーブルと列のマッピングを取得する

作成されたマッピングを簡単に確認するには、次の FetchXML クエリを使用します。 このクエリを実行する方法の詳細については、「 FetchXml を使用したデータのクエリ」を参照してください。


<fetch>
   <entity name='entitymap'>
      <attribute name='sourceentityname'/>
      <attribute name='targetentityname'/>
      <link-entity name='attributemap' alias='attributemap' to='entitymapid' from='entitymapid' link-type='inner'>
         <attribute name='sourceattributename'/>
         <attribute name='targetattributename'/>
      </link-entity>
   </entity>
 </fetch>

こちらも参照ください

列をマップする