Associer et dissocier des lignes de tables à l’aide du SDK pour .NET

Les lignes du tableau sont associées les unes aux autres à l’aide de colonnes de recherche sur la ligne de tableau associée. Le moyen le plus simple d’associer deux lignes dans une relation un-à-plusieurs est d’utiliser une EntityReference pour définir la valeur d’une colonne de recherche sur la ligne associée.

Le moyen le plus simple de dissocier deux lignes dans une relation un-à-plusieurs est de définir la valeur de la colonne de recherche sur null..

Les relations utilisant une relation plusieurs-à-plusieurs dépendent également des colonnes de recherche sur l’entité d’intersection qui soutient la relation plusieurs-à-plusieurs. Ces relations sont définies par l’existence de lignes dans cette entité d’intersection. Tandis que vous pouvez interagir directement avec l’entité avec intersection, il est plus facile d’utiliser l’API pour le faire à votre place.

Utiliser la méthode Associer ou AssociateRequest

La valeur principale pour utiliser la méthode IOrganizationService.Associate ou le message AssociateRequest avec la méthode IOrganizationService.Execute consiste à pouvoir :

  • Associer plusieurs lignes en une seule opération
  • Associez facilement des lignes à l’aide d’une relation plusieurs-à-plusieurs sans vous soucier de l’entité d’intersection.

Pour associer des lignes de tableau à ces API, vous avez besoin de trois éléments :

  • Une référence d’entité à la ligne que vous souhaitez associer
  • Nom de la relation.
  • Une ou plusieurs références auxquelles vous souhaitez associer la ligne du tableau

Que la relation soit une relation un-à-plusieurs ou plusieurs-à-plusieurs importe peu. Les paramètres ou les propriétés sont de niveau équivalent.

Vous pouvez découvrir les noms des relations en affichant l’interface utilisateur de personnalisation ou dans les métadonnées à l’aide de Metadata Browser.

Pour plus d’informations :

L’exemple suivant définira un contact spécifique (jimGlynn) en tant que contact principal pour tous les comptes qui sont à Redmond.


// Retrieve the accounts
var query = new QueryByAttribute("account")
{
ColumnSet = new ColumnSet("name")
};
query.AddAttributeValue("address1_city", "Redmond");

EntityCollection accounts = svc.RetrieveMultiple(query);

//Convert the EntityCollection to a EntityReferenceCollection
var accountReferences = new EntityReferenceCollection();

accounts.Entities.ToList().ForEach(x => {
accountReferences.Add(x.ToEntityReference());
});

// The contact to associate to the accounts
var jimGlynn = new EntityReference("contact", 
new Guid("cf76763a-ba1c-e811-a954-000d3af451d6"));

// The relationship to use
var relationship = new Relationship("account_primary_contact");

// Use the Associate method
svc.Associate(jimGlynn.LogicalName, jimGlynn.Id, relationship, accountReferences);

Bien qu’il n’existe aucun avantage particulier à procéder ainsi, si vous souhaitiez utiliser le message AssociateRequest, vous pouvez remplacer la dernière ligne par ce qui suit :

// Use AssociateRequest
AssociateRequest request = new AssociateRequest()
{
RelatedEntities = accountReferences,
Relationship = relationship,
Target = jimGlynn
};

svc.Execute(request);

Cette opération est identique à trois opérations de mise à jour distinctes de colonne de recherche Account.PrimaryContactId, mais elle utilise la relation account_primary_contact, qui est une relation d’entité plusieurs-à-un sur le compte et une relation d’entité un-à-plusieurs sur le contact.

Si vous examinez les propriétés des colonnes de relation, vous pouvez voir que la valeur ReferencingEntity est account et la valeur ReferencingAttribute est primarycontactid.

Utiliser la méthode Dissocier ou DisassociateRequest

La méthode IOrganizationService.Disassociate ou le message DisassociateRequest avec la méthode IOrganizationService.Execute sont juste l’inverse de la façon dont vous associez des lignes de tableau.

Le code suivant inverse les associations effectuées dans l’exemple ci-dessus.

// Retrieve the accounts
var query = new QueryByAttribute("account")
{
ColumnSet = new ColumnSet("name")
};
query.AddAttributeValue("address1_city", "Redmond");

EntityCollection accounts = svc.RetrieveMultiple(query);

//Convert the EntityCollection to a EntityReferenceCollection
var accountReferences = new EntityReferenceCollection();

accounts.Entities.ToList().ForEach(x => {
accountReferences.Add(x.ToEntityReference());
});

// The contact to associate to the accounts
var jimGlynn = new EntityReference("contact", 
new Guid("cf76763a-ba1c-e811-a954-000d3af451d6"));

// The relationship to use
var relationship = new Relationship("account_primary_contact");

// Use the Disassociate method
svc.Disassociate(jimGlynn.LogicalName, jimGlynn.Id, relationship, accountReferences);

Bien qu’il n’existe aucun avantage particulier à procéder ainsi, si vous souhaitiez utiliser le message DisassociateRequest, vous pouvez remplacer la dernière ligne par ce qui suit :

// Use DisassociateRequest
DisassociateRequest request = new DisassociateRequest()
{
RelatedEntities = accountReferences,
Relationship = relationship,
Target = jimGlynn
};

svc.Execute(request);

Voir aussi

Créer des lignes de table à l’aide du SDK pour .NET
Récupérer une ligne de table à l’aide du SDK pour .NET
Mettre à jour et supprimer des lignes de table à l’aide du SDK pour .NET

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