Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
L’API web prend en charge l’utilisation des définitions de relation (métadonnées). Les concepts décrits dans les définitions de relation table s’appliquent également à l’API web.
Éligibilité pour les relations
Avant de créer une relation de table, vous devez confirmer si la table 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 au Kit de développement logiciel (SDK) pour les messages .NET décrits dans l’éligibilité de la relation Table.
| Action | Descriptif |
|---|---|
| Action CanBeReferenced | Vérifie si l’entité spécifiée peut être l’entité principale (un) dans une relation un-à-plusieurs. |
| Action CanBeReferencing | 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. |
| Fonction GetValidManyToMany | Renvoie l’ensemble des entités pouvant participer à une relation plusieurs-à-plusieurs. |
| Fonction GetValidReferencedEntities | Retourne l’ensemble d’entités valides en tant qu’entité principale (une) de l’entité spécifiée dans une relation un-à-plusieurs. |
| Fonction GetValidReferencingEntities | Retourne l’ensemble d’entités valides en tant qu’entité associée (plusieurs) à l’entité spécifiée dans une relation un-à-plusieurs. |
Créer une relation un-à-plusieurs
Lorsque vous créez une relation un-à-plusieurs, vous la définissez à l’aide de OneToManyRelationshipMetadata EntityType. Cette définition inclut l’attribut de recherche, qui est défini à l’aide de LookupAttributeMetadata EntityType et nécessite également des propriétés complexes utilisant 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. Plus d’informations : Créer des lignes de table associées dans une opération et des métadonnées de relation de table
Si vous souhaitez appliquer un nom de propriété de navigation personnalisé pour une 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, exécutez l′action POST pour le JSON sur l′ensemble d′entités RelationshipDefinitions. Vous devez inclure la valeur de propriété @odata.type de Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata pour clarifier le type de relation que vous créez, car ce même jeu d’entités 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 [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"
}
}
Réponse:
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.2/RelationshipDefinitions(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)
Créer une relation plusieurs à plusieurs
Si vous souhaitez appliquer un nom de propriété de navigation personnalisé pour une 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, exécutez l′action POST pour le JSON sur l′ensemble d′entités RelationshipDefinitions. Vous devez inclure la valeur de propriété @odata.type de Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata pour clarifier le type de relation que vous créez, car ce même ensemble d′entités est utilisé pour créer des relations un-à-plusieurs. L’URI de la relation résultante est retournée dans la réponse.
Requête :
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"
}
Réponse:
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.2/RelationshipDefinitions(11bb11bb-cc22-dd33-ee44-55ff55ff55ff)
Créer des relations pour prendre en charge une recherche multi-tables
Les colonnes de type de recherche à plusieurs tables permettent à un utilisateur d’utiliser une table spécifique qui a plusieurs relations un-à-plusieurs (1 :M) avec d’autres tables de l’environnement. Une colonne de type de recherche unique peut faire référence à plusieurs autres tables. Une valeur de recherche envoyée à la colonne de type multi-table est associée à un enregistrement dans l’une des tables associées.
Plus d’informations : Utiliser des colonnes de recherche multi-tables
Mettre à jour les relations
Comme indiqué dans Mettre à jour les définitions de table, vous mettez à 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 des propriétés individuelles avec la méthode HTTP PATCH comme vous le faites avec des tables de données métiers. Tout comme avec les entités et les attributs, vous devez inclure un MSCRM.MergeLabels en-tête avec la valeur définie sur true afin d'éviter de remplacer 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 des relations
Pour supprimer une relation à l’aide de l’API web, utilisez la méthode HTTP DELETE avec l’URI de la relation.
Voir aussi
Utiliser l’API Web avec les définitions de table
Requête des définitions de table à l’aide de l’API web
Récupérer les définitions de table par nom ou MetadataId
Modèles de tables et de colonnes à l’aide de l’API Web
Exemple d’opérations de schéma de table de l’API Web
Exemple d’opérations de schéma de table de l’API Web (C#)