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

関連付けがされているテーブル間で列をマッピングすることができます。 これにより、他のレコードのコンテキストで作成したレコードの既定値を設定できます。 アプリケーションのカスタマイズ ツールを使ってテーブルをマッピングするには、列のマッピングを参照してください。

アプリケーションの動作

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

たとえば、アカウントのアドレス列と連絡先のアドレス列の間にマッピングを設定することができます。 このマッピングでは、ユーザーが特定のアカウントに関連する連絡先を追加すると、その連絡先のアドレス列が自動的に入力されます。

ふとつのカラムを複数のターゲット列にマッピングすることができます。 たとえば、取引先の住所情報を、受注の請求先住所と送付先住所の両方にマップできます。

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

テーブルとカラムのマッピングデータを使用する

Web API の使用

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

InitializeFrom リクエストから受信したレスポンスは、ソース テーブルとターゲット テーブルの間でマッピングされたカラムの値と、親レコードの GUID で構成されます。 リレーションシップを持つテーブル間の列のマッピングは、テーブル セットごとに異なり、カスタマイズも可能です。そのため、InitializeFrom 関数のリクエストからのレスポンスは、テーブルや組織ごとに異なる可能性があります。 このレスポンスが新規レコードの作成リクエストのボディに渡されると、これらのカラム値が新規レコードに複製されます。 カスタム マッピングされた列の値も、処理中に新しいレコードに設定されます。

注意

2 つのテーブルをマッピングできるかどうかを判断するには、次のような Web API リクエストを使用します :
GET [Organization URI]/api/data/v9.0/entitymaps?$select=sourceentityname,targetentityname&$orderby=sourceentityname

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

.NET 用 SDK の使用

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

有効なテーブル マッピングは、リレーションシップが作成されたときに作成されます。 entity_map_attribute_maps のリレーションシップを使用して、テーブル マッピングで指定されたテーブルのペアの列マッピングを取得します。
列のマッピングのレコードを作成・更新できます。 列のマッピングには以下の条件が必要です :

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

テーブル間の列を自動でマッピングする

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

各カラムのマッピングを手動で作成するだけでなく、AutoMapEntity メッセージ (AutoMapEntity Action または AutoMapEntityRequest クラス)を使って新しい列マッピングのセットを生成することもできます。 このメッセージは、ツール バーの その他の操作 メニューの マッピングの生成 メニュー オプションにあるアクションを実行します (列マッピングを自動的に生成する を参照して下さい)。 このメッセージは、2 つの関連するテーブルの間で、列名とタイプが同じであれば、すべての列をマッピングします。 このメッセージは、生産性向上の意図で提供されているもので、すべての列のマッピングを手動で追加する必要はありません。 一連の類似したマッピングを生成することで、要件に合わせて個々のマッピングを追加または削除するための手動による作業を削減できます。

注意

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

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

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


<fetch version='1.0' mapping='logical' distinct='false'>
   <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>

参照

列のマップ

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。