Web API では、リレーションシップ定義 (メタデータ) の操作がサポートされています。 Table リレーションシップの定義で説明されている概念は、Web API にも適用されます。
リレーションシップの適格性
テーブル (エンティティ) リレーションシップを作成する前に、テーブルがリレーションシップに参加できるかどうかを確認する必要があります。 次の表に示すアクションを使用して、適格性を判断できます。 これらのアクションは、「 Table リレーションシップの適格性」で説明されている SDK for .NET メッセージに対応します。
| 目的 | Description |
|---|---|
| CanBeReferenced アクション | 指定したエンティティが一対多リレーションシップのプライマリ エンティティ (1) であるかどうかを確認します。 |
| CanBeReferencing アクション | 指定したエンティティが、一対多リレーションシップの参照元エンティティ (多) であるかどうかを確認します。 |
| CanManyToMany アクション | エンティティが多対多リレーションシップに参加できるかどうかを確認します。 |
| GetValidManyToMany 関数 | 多対多リレーションシップに参加できるエンティティのセットを返します。 |
| GetValidReferencedEntities 関数 | 一対多リレーションシップの指定したエンティティから、プライマリ エンティティ (1) として有効なエンティティのセットを返します。 |
| GetValidReferencingEntities 関数 | 指定されたエンティティに、1 対多の関連性の関連エンティティ (多の側) として有効な一連のエンティティを返します。 |
一対多リレーションシップを作成する
一対多リレーションシップを作成するときは、 OneToManyRelationshipMetadata EntityType を使用して定義します。 この定義には、 LookupAttributeMetadata EntityType を使用して定義されるルックアップ属性が含まれます。また、 AssociatedMenuConfiguration ComplexType、 CascadeConfiguration ComplexType、 Label ComplexType 、 LocalizedLabel ComplexType を使用する複合プロパティも必要です。 ルックアップ属性は、 OneToManyRelationshipMetadata オブジェクトの Lookup 単一値ナビゲーション プロパティに設定され、 ディープ 挿入を使用して同時に作成されます。 詳細情報: 1 回の操作で関連するテーブル行を作成し、テーブル リレーションシップのメタデータを作成する
一対多リレーションシップにカスタム ナビゲーション プロパティ名を適用する場合は、 ReferencingEntityNavigationPropertyName プロパティと ReferencedEntityNavigationPropertyName プロパティの値を設定できます。
リレーションシップとルックアップ属性を定義するために必要な JSON を生成したら、JSON をPOSTエンティティ セットにRelationshipDefinitionsします。 同じエンティティ セットを使用して多対多リレーションシップを作成するため、作成するリレーションシップの種類を明確にするには、@odata.typeの Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata プロパティ値を含める必要があります。 結果のリレーションシップの URI が応答で返されます。
要求:
POST [Organization URI]/api/data/v9.2/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.2/RelationshipDefinitions(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)
多対多の関連性を作成する
多対多リレーションシップにカスタム ナビゲーション プロパティ名を適用する場合は、 Entity1NavigationPropertyName プロパティと Entity2NavigationPropertyName プロパティの値を設定できます。
リレーションシップを定義するために必要な JSON を生成したら、JSON を POST エンティティ セットにRelationshipDefinitionsします。 同じエンティティ セットを使用して一対多リレーションシップを作成するため、作成するリレーションシップの種類を明確にするには、@odata.typeの Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata プロパティ値を含める必要があります。 結果のリレーションシップの URI が応答で返されます。
要求:
POST [Organization URI]/api/data/v9.2/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.2/RelationshipDefinitions(11bb11bb-cc22-dd33-ee44-55ff55ff55ff)
複数テーブル参照をサポートするリレーションシップを作成する
複数テーブル参照の種類の列を使用すると、環境内の他のテーブルに対して複数の一対多 (1:M) リレーションシップを持つ特定のテーブルを使用できます。 単一の検索タイプの列は、他の複数のテーブルを参照できます。 複数テーブル型の列に送信された参照値は、関連するテーブルのレコードと照合されます。
詳細情報: 複数テーブルの参照列を使用する
関係性の更新
テーブル定義の更新で説明したように、HTTP PUT メソッドを使用してリレーションシップを更新し、既存の定義を適用する変更に置き換えます。 ビジネス データ テーブルの場合と同様に、HTTP PATCH メソッドを使用して個々のプロパティを編集することはできません。 エンティティや属性と同様に、更新プログラムに含まれていないローカライズされたラベルが上書きされないように、値を MSCRM.MergeLabels に設定したtrue ヘッダーを含める必要があります。また、カスタマイズをシステムでアクティブにする前に公開する必要があります。
関連性の削除
Web API を使用してリレーションシップを削除するには、HTTP DELETE メソッドとリレーションシップの URI を使用します。
こちらも参照ください
テーブル定義で Web API を使用する
Web API を使用したテーブル定義のクエリ
名前または MetadataId を使用してテーブル定義を取得する
Web API を使用したテーブルと列のモデル化
Web API テーブル スキーマ操作のサンプル
Web API テーブル スキーマ操作サンプル (C#)