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 de l’entité d’intersection qui prend en charge la relation plusieurs-à-plusieurs. Les relations sont définies par l’existence de lignes dans cette entité d’intersection. Tandis que vous pouvez interagir directement avec l’entité d’intersection, il est plus facile d’utiliser l’API pour effectuer cette tâche à votre place.
Utiliser la méthode Associer ou AssociateRequest
La valeur principale de l’utilisation de la méthode IOrganizationService.Associate ou AssociateRequest avec la méthode IOrganizationService.Execute est que vous pouvez :
- 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 :
- Créer et modifier des relations 1:N (un-à-plusieurs) ou N:1 (plusieurs-à-un)
- Création et modification de relations de ligne de table plusieurs-à-plusieurs (N à N)
- Parcourir les métadonnées de votre environnement
L’exemple suivant crée une relation et associe une entité principale à un ensemble d’entités associées.
/// <summary>
/// Associate a primary entity with one or more other entities,
/// then remove the association.
/// </summary>
/// <param name="service">Authenticated web service connection.</param>
/// <param name="primaryEntity">Primary entity for the association.</param>
/// <param name="relationship">Type of relationship between the entities.</param>
/// <param name="relatedEntities">Related entities to associate with the primary entity.</param>
/// <returns>True if successful; otherwise false.</returns>
static public bool AssociateDisassociate(IOrganizationService service,
EntityReference primaryEntity, string relationship,
EntityReferenceCollection relatedEntities
)
{
// Define the type of relationship between the entities.
var relation = new Relationship(relationship);
try
{
// Associate the primary entity with the related entities.
service.Associate(primaryEntity.LogicalName, primaryEntity.Id,
relation, relatedEntities);
Console.WriteLine(
$"AssociateDisassociate(): The entities have been associated.");
// Disassociate the primary entity with the related entities.
service.Disassociate(primaryEntity.LogicalName, primaryEntity.Id,
relation, relatedEntities);
Console.WriteLine(
$"AssociateDisassociate(): The entities have been disassociated.");
return true;
}
catch (Exception ex)
{
Console.WriteLine(
$"AssociateDisassociate(): {ex.Message}");
return false;
}
}
Complétez l’exemple de code : AssociateDisassociate
Si vous vouliez utiliser le AssociateRequest, vous utiliseriez le code suivant. L’un des avantages de l’utilisation de la requête au lieu de la méthode du client de service est que la requête prend en charge l’utilisation de paramètres facultatifs.
AssociateRequest request = new AssociateRequest()
{
RelatedEntities = relatedEntities,
Relationship = relation,
Target = primaryEntity
};
service.Execute(request);
Supposons que nous associions une entité principale (un contact) à trois entités associées (comptes). Cette opération d’association unique illustrée ci-dessus est identique à trois opérations de mise à jour distinctes où la colonne de recherche Account.PrimaryContactId est définie. Au lieu de cela, la méthode ou l’appel de demande de client de service plus simple utilise la relation account_primary_contact qui établit une relation d’entité plusieurs-à-un sur chaque compte associé 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 DisassociateRequest avec la méthode IOrganizationService.Execute sont simplement l’inverse de la façon dont vous associez les lignes de table.
Vous pouvez afficher un exemple Disassociate
d’appel de méthode dans l’exemple de code présenté précédemment. Si vous vouliez utiliser le DisassociateRequest, le code ressemblerait à ceci :
DisassociateRequest request = new DisassociateRequest()
{
RelatedEntities = relatedEntities,
Relationship = relation,
Target = primaryEntity
};
service.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