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 |
---|---|
Vérifie si l’entité spécifiée peut être l’entité principale (une) dans une relation un-à-plusieurs. |
|
Vérifie si l’entité spécifiée peut être l’entité de référencement (plusieurs) dans une relation un-à-plusieurs. |
|
Vérifie si l’entité peut participer à une relation plusieurs à plusieurs. |
|
Renvoie l’ensemble des entités pouvant participer à une relation plusieurs-à-plusieurs. |
|
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. |
|
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