Web API を使用したテーブルの関連性の作成および更新
注意
エンティティとテーブルの違いがわかりませんか? Microsoft Dataverse で「開発者: 用語を理解する」を参照してください。
Web APIは、関連性定義 (メタデータ) の操作をサポートします。 テーブルの関連性の定義で説明されている概念は、Web API にも適用されます。
関連性の有効性
テーブル (エンティティ) の関連性を作成する前に、それらのテーブルがその関連性にふさわしいかどうかを確認してください。 次の表に表示されているアクションを使用して有効性を確認できます。 これらのアクションは、テーブルの関係性の適格性で説明されている組織のサービス メッセージに対応しています。
| 操作 | 内容 |
|---|---|
| CanBeReferenced Action | 指定されたエンティティが一対多の関連性の主エンティティ (一) になるかどうかをチェックします。 |
| CanBeReferencing Action | 指定されたエンティティが一対多の関連性の参照エンティティ (多) になるかどうかをチェックします。 |
| CanManyToMany Action | エンティティが多対多の関連性に参加できるかどうかをチェックします。 |
| GetValidManyToMany Function | 多対多の関連性に参加できる一連のエンティティを返します。 |
| GetValidReferencedEntities Function | 指定されたエンティティから、1 対多の関連性の主エンティティ (1 の側) として有効な一連のエンティティを返します。 |
| GetValidReferencingEntities Function | 指定されたエンティティに、1 対多の関連性の関連エンティティ (多の側) として有効な一連のエンティティを返します。 |
一対多の関連性を作成する
一対多の関連性を作成する場合は、OneToManyRelationshipMetadata EntityType を使用して定義します。 この定義には、LookupAttributeMetadata EntityType を使用して定義される検索属性が含まれ、AssociatedMenuConfiguration ComplexTypeCascadeConfiguration ComplexTypeLabel ComplexType および LocalizedLabel ComplexType を使用した複雑なプロパティも必要です。 検索属性は OneToManyRelationshipMetadata オブジェクトの検索の単一値のナビゲーション プロパティに設定され、ディープ挿入 を使用して同時に作成されます。 詳細情報 : 1回の操作で関連テーブルを作成する と テーブルの関係性のメタデータ
一対多の関連性にカスタム ナビゲーション プロパティ名を使用する場合は、 ReferencingEntityNavigationPropertyName および ReferencedEntityNavigationPropertyName プロパティの値を設定きます。
関係性とルックアップ属性の定義に必要な JSON を生成後は、その JSON を RelationshipDefinitions のエンティティ セットに POST します。 この同じエンティティセットを使って多対多の関係性を作ることができるので、作成する関係性の種類を明確にするために @odata.type プロパティの値を Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata にする必要があります。 作成された関連性の URI が応答で返されます。
要求
POST [Organization URI]/api/data/v9.0/RelationshipDefinitions HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"SchemaName": "new_contact_new_bankaccount",
"@odata.type": "Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata",
"AssociatedMenuConfiguration": {
"Behavior": "UseCollectionName",
"Group": "Details",
"Label": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Bank Accounts",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Bank Accounts",
"LanguageCode": 1033
}
},
"Order": 10000
},
"CascadeConfiguration": {
"Assign": "Cascade",
"Delete": "Cascade",
"Merge": "Cascade",
"Reparent": "Cascade",
"Share": "Cascade",
"Unshare": "Cascade"
},
"ReferencedAttribute": "contactid",
"ReferencedEntity": "contact",
"ReferencingEntity": "new_bankaccount",
"Lookup": {
"AttributeType": "Lookup",
"AttributeTypeName": {
"Value": "LookupType"
},
"Description": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "The owner of the account",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "The owner of the account",
"LanguageCode": 1033
}
},
"DisplayName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Account Owner",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Account Owner",
"LanguageCode": 1033
}
},
"RequiredLevel": {
"Value": "ApplicationRequired",
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
},
"SchemaName": "new_AccountOwner",
"@odata.type": "Microsoft.Dynamics.CRM.LookupAttributeMetadata"
}
}
応答
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.0/RelationshipDefinitions(d475020f-5d7c-e511-80d2-00155d2a68d2)
多対多の関連性を作成する
多対多の関連性にカスタム ナビゲーション プロパティ名を使用する場合は、 Entity1NavigationPropertyName および Entity2NavigationPropertyName プロパティの値を設定きます。
関係性を定義するために必要な JSON の生成後は、その JSON を RelationshipDefinitions のエンティティ セットに POST します。 この同じエンティティセットを使って一対多の関係性を作ることができるので、作成する関係性の種類を明確にするために @odata.type プロパティの値を Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata にする必要があります。 結果として、関係性の URI の応答が返されます。
要求
POST [Organization URI]/api/data/v9.0/RelationshipDefinitions HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"SchemaName": "new_accounts_campaigns",
"@odata.type": "Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata",
"Entity1AssociatedMenuConfiguration": {
"Behavior": "UseLabel",
"Group": "Details",
"Label": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Account",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Account",
"LanguageCode": 1033
}
},
"Order": 10000
},
"Entity1LogicalName": "account",
"Entity2AssociatedMenuConfiguration": {
"Behavior": "UseLabel",
"Group": "Details",
"Label": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Campaign",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Campaign",
"LanguageCode": 1033
}
},
"Order": 10000
},
"Entity2LogicalName": "campaign",
"IntersectEntityName": "new_accounts_campaigns"
}
回答
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.0/RelationshipDefinitions(420245fa-c77c-e511-80d2-00155d2a68d2)
リレーションシップを作成して、マルチテーブル検索をサポートする
マルチテーブル検索タイプの列を使用すると、ユーザーは、環境内の他のテーブルに対して複数の一対多 (1:M) の関連付けを持つ特定のテーブルを使用できます。 単一の検索タイプの列は、他の複数のテーブルを参照できます。 マルチテーブル タイプの列に送信された検索値は、関連するテーブルのいずれかのレコードと一致します。
詳細: マルチテーブル検索列を使用する
関係性の更新
テーブル定義の更新で説明したように、HTTP PUT メソッドを使って関係性を更新し、既存の定義を適用したい変更点で置き換えることができます。 ビジネスデータ テーブルのように、HTTP PATCH メソッドを使用して個々のプロパティを編集することはできません。 エンティティや属性の場合と同じように、 true に設定された値の MSCRM.MergeLabels 見出しを使用して、更新に含まれていないローカライズ済みのラベルの上書きを防止し、システムでアクティブ化される前にカスタマイズを公開する必要があります。
関連性の削除
Web API を使用して関連性を削除するには、HTTP DELETE メソッドを関連性の URI で使用します。
関連項目
テーブル定義による Web API の利用
Web API を使用したテーブル定義のクエリ
名前または MetadataId によるテーブル定義を取得する
Web API を使用したテーブルと列のモデル化
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。
フィードバック
フィードバックの送信と表示