Créer et mettre à jour les relations de table à l’aide de l’API web
L′API Web prend en charge l′utilisation de définitions de relations (métadonnées). Les concepts décrits dans Définitions des relations de 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 aux messages du SDK pour .NET décrits dans Éligibilité de la relation de table.
Action | 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. Plus d′information : Créer des lignes de tables liées en une seule opération et Métadonnées de relation de table
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, 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 ensemble 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.
Demande :
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(d475020f-5d7c-e511-80d2-00155d2a68d2)
Créer une relation 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, 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 renvoyée dans la réponse.
Demande :
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(420245fa-c77c-e511-80d2-00155d2a68d2)
Créer des relations pour prendre en charge une recherche multi-tables
Les colonnes de type de recherche multi-tables permettent 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 soumise à la colonne de type multi-tables est mise en correspondance avec un enregistrement dans l′une des tables associées.
Plus d′informations : Utiliser les colonnes de recherche multi-tables
Mettre à jour les relations
Comme expliqué dans Mettre à jour les définitions de table, vous mettez à jour les relations en utilisant la méthode HTTP PUT pour remplacer la définition existante par les modifications que vous souhaitez appliquer. Vous ne pouvez pas modifier les propriétés individuelles à l′aide de la méthode HTTP PATCH, comme pour les tables de données métiers. 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
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#)
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).