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é).