Partager via


Créer et mettre à jour les relations d'entité à l’aide de l'API Web

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

L'API Web prend en charge l'utilisation des métadonnées de relation. Les concepts décrits dans Personnaliser des métadonnées de relation d’entité s'appliquent également à l'API Web.

Contenu de la rubrique

Éligibilité pour les relations

Créer une relation 1 à plusieurs

Créer une relation plusieurs à plusieurs

Mettre à jour les relations

Supprimer les relations

Éligibilité pour les relations

Avant de créer une relation d’entité, vous devez confirmer si l’entité est éligible pour participer aux relations. Vous pouvez utiliser les actions répertoriées dans le tableau suivant pour déterminer l'éligibilité. Ces actions correspondent aux messages de service de l'organisation décrits dansÉligibilité de la relation d’entité.

Pour

Description

CanBeReferenced Action

Vérifie si l’entité spécifiée peut être l’entité principale (une) dans une relation un-à-plusieurs.

CanBeReferencing Action

Vérifie si l’entité spécifiée peut être l’entité de référencement (plusieurs) dans une relation un-à-plusieurs.

CanManyToMany Action

Vérifie si l’entité peut participer à une relation plusieurs à plusieurs.

GetValidManyToMany Function

Renvoie l’ensemble des entités pouvant participer à une relation plusieurs-à-plusieurs.

GetValidReferencedEntities Function

Renvoie l’ensemble des entités qui sont valides comme l’entité principale (une) à partir de l’entité spécifiée dans une relation un-à-plusieurs.

GetValidReferencingEntities Function

Renvoie l’ensemble des entités qui sont valides comme l’entité relative (plusieurs) à l’entité spécifiée dans une relation un-à-plusieurs.

Créer une relation 1 à plusieurs

Lorsque vous créez une relation un-à-plusieurs, vous devez la définir à l'aide de l'OneToManyRelationshipMetadata EntityType. Cette définition inclut l'attribut de recherche, qui est défini à l'aide de LookupAttributeMetadata EntityType et requiert également les propriétés complexes à l'aide de AssociatedMenuConfiguration ComplexType, CascadeConfiguration ComplexType, Label ComplexType et LocalizedLabel ComplexType. L'attribut de recherche est défini sur la propriété de navigation à valeur unique Lookup de l'objet OneToManyRelationshipMetadata et est créé en même temps en utilisant l'insertion profonde.Pour plus d'informations :Créer des entités associées en une opération et Relations 1 à N (un-à-plusieurs)

Si vous souhaitez appliquer un nom de propriété de navigation personnalisé pour les relation un-à-plusieurs vous pouvez définir des valeurs pour les propriétés ReferencingEntityNavigationPropertyName et ReferencedEntityNavigationPropertyName.

Une fois que vous avez généré le JSON nécessaire pour définir la relation et l'attribut de recherche, POST le JSON sur l'ensemble d'entités RelationshipDefinitions. Vous devez inclure la valeur d'une propriété @odata.type de Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata pour expliciter le type de relation que vous créez car ce même jeu d'entité est utilisé pour créer des relations plusieurs-à-plusieurs. L'uri pour la relation qui en résulte est renvoyé dans la réponse.

  • Requête

    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"
     }
    }
    
  • Réponse

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: cc_WebAPI_ServiceURI/RelationshipDefinitions(d475020f-5d7c-e511-80d2-00155d2a68d2)
    

Créer une relation plusieurs à plusieurs

Lorsque vous créez une relation plusieurs-à-plusieurs, vous devez la définir à l'aide de l'ManyToManyRelationshipMetadata EntityType. Cette définition inclut le nom de l'entité avec intersection à créer ainsi que le mode d'affichage dans l'application à l'aide de AssociatedMenuConfiguration ComplexType, Label ComplexType et LocalizedLabel ComplexType.Pour plus d'informations :Relations plusieurs-à-plusieurs

Si vous souhaitez appliquer un nom de propriété de navigation personnalisé pour les relation plusieurs-à-plusieurs vous pouvez définir des valeurs pour les propriétés Entity1NavigationPropertyName et Entity2NavigationPropertyName.

Une fois que vous avez généré le JSON nécessaire pour définir la relation, POST le JSON sur l'ensemble d'entités RelationshipDefinitions. Vous devez inclure la valeur d'une propriété @odata.type de Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata pour expliciter le type de relation que vous créez car ce même jeu d'entité est utilisé pour créer des relations un-à-plusieurs. L'uri pour la relation qui en résulte est renvoyé dans la réponse.

  • Requête

    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"
    }
    
  • Réponse

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: cc_WebAPI_ServiceURI/RelationshipDefinitions(420245fa-c77c-e511-80d2-00155d2a68d2)
    

Mettre à jour les relations

Comme décrit dans Mettre à jour des entités, vous devez mettre à jour les relations à l'aide de la méthode HTTP PUT pour remplacer la définition existante par les modifications que vous souhaitez appliquer. Vous ne pouvez pas modifier plusieurs propriétés à l'aide de la méthode HTTP PATCH comme vous pouvez le faire avec les entités de données commerciales. Comme avec les entités et les attributs, vous devez inclure un en-tête MSCRM.MergeLabels avec la valeur définie sur true pour éviter d'écraser les étiquettes localisées non incluses dans votre mise à jour et vous devez publier les personnalisations avant qu'elles ne soient actives dans le système.

Supprimer les relations

Pour supprimer une relation à l'aide de l'API Web, utilisez la méthode HTTP DELETE avec l'URI pour la relation.

Voir aussi

Personnaliser des métadonnées de relation d’entité
Utiliser l'API Web avec les métadonnées Dynamics 365
Interroger les métadonnées à l'aide de l'API Web
Récupérer des métadonnées par nom ou MetadataId
Créer et mettre à jour les définitions d'entité à l’aide de l'API Web

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright