Partager via


Créer et mettre à jour des relations de table à l’aide de l’API web

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#)