Web API を使用してエンティティ関係を作成および更新する

公開日: 2017年1月

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

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 オブジェクトの Lookup の単一値のナビゲーション プロパティに設定され、ディープ挿入を使用して同時に作成されます。詳細:1 回の操作で関連するエンティティを作成する および 一対多関連付け

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

関連付けと検索属性に必要な JSON を生成したら、 JSON を RelationshipDefinitions エンティティ セットに POST します。 作成する関連付けの種類を明確にするために Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata の**@odata.type** プロパティ値を含める必要がありますが、これはこの同じエンティティ セットが多対多の関連付けの作成に使用されるためです。 作成された関連付けの URI が応答で返されます。

  • 要求

    POST cc_WebAPI_ServiceURI/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: cc_WebAPI_ServiceURI/RelationshipDefinitions(d475020f-5d7c-e511-80d2-00155d2a68d2)
    

多対多の関連付けを作成する

多対多の関連付けを作成する場合は、ManyToManyRelationshipMetadata EntityType を使用して定義します。 この定義には、作成する交差するエンティティの名前と AssociatedMenuConfiguration ComplexTypeLabel ComplexType および LocalizedLabel ComplexType を使用した関連付けの表示方法も含まれます。詳細:多対多関連付け

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

関連付けの定義に必要な JSON を生成したら、 JSON を RelationshipDefinitions エンティティ セットに POST します。 作成する関連付けの種類を明確にするために Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata の**@odata.type** プロパティ値を含める必要がありますが、これはこの同じエンティティ セットが一対多の関連付けの作成に使用されるためです。 作成された関連付けの URI が応答で返されます。

  • 要求

    POST cc_WebAPI_ServiceURI/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: cc_WebAPI_ServiceURI/RelationshipDefinitions(420245fa-c77c-e511-80d2-00155d2a68d2)
    

関連付けの更新

エンティティの更新 で説明されているように、HTTP PUT メソッドを使用して関連付けを更新し既存の定義を適用する変更と置き換えます。 ビジネス データ エンティティと同じように HTTP PATCH メソッドを使用して個々のプロパティを編集することはできません。 エンティティや属性の場合と同じように、 true に設定された値の MSCRM.MergeLabels 見出しを使用して、更新に含まれていないローカライズ済みのラベルの上書きを防止し、システムでアクティブ化される前にカスタマイズを公開する必要があります。

関連付けの削除

Web API を使用して関連付けを削除するには、HTTP DELETE メソッドを関連付けの URI で使用します。

関連項目

エンティティ関係メタデータをカスタマイズする
Web API を Dynamics 365 メタデータで使用する
Web API を使用したクエリ メタデータ
名前または MetadataId でのメタデータの取得
Web API を使用してエンティティ定義を作成および更新

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権