Entitäten mithilfe des Organisations-Service zuordnen oder trennenAssociate and disassociate entities using the Organization Service

Entitätsdatensätze werden miteinander mit Suchattributen für die verknüpfte Entität zugeordnet.Entity records are associated to each other using lookup attributes on the related entity. Die einfachste Methode, zwei Entitätsdatensätze in einer 1: n-Beziehung zuzuordnen ist es, EntityReference zu verwenden, um den Wert eines Suchattributs für die verknüpfte Entität festzulegen.The simplest way to associate two entity records in a one-to-many relationship is to use an EntityReference to set the value of a lookup attribute on the related entity.

Die einfachste Methode, zwei Entitätsdatensätze in einer 1: n-Beziehung zu trennen ist es, eine 1:n-Beziehung zu verwenden, um den Wert eines Suchattributs auf Null festzulegen.The simplest way to disassociate two entity records in a one-to-many relationship is to set the value of the lookup attribute to null.

Beziehungen mit einer n: n-Beziehung hängen auch von Suchattributen auf Entität überschneidet ab, die die n: n-Beziehung unterstützt.Relationships using an many-to-many relationship also depend on lookup attributes on the intersect entity that supports the many-to-many relationship. Diese Beziehungen definieren sich am Vorhandensein von Entitätsdatensätzen in dieser überschneidenden Entität.These relationship are defined by the existence of entity records in that intersect entity. Wenn Sie mit der überschneidendem Entität direkt interagieren können, ist es viel einfacher, die API dafür zu verwenden.While you can interact with the intersect entity directly, it is much easier to use the API to do this for you.

Nutzen Sie die Zuordnungsmethode doder AssociateRequestUse the Associate method or AssociateRequest

Der Hauptwert während der Verwendung von IOrganizationServiceAssociateThe main value in using the IOrganizationService.Associate Methode oder der AssociateRequest mit dem IOrganizationServiceExecutemethod or the AssociateRequest with the IOrganizationService.Execute Methode liegt darin, dass Sie können:method is that you can:

  • Ordnen Sie mehrere Datensätze in einen Vorgang zuAssociate multiple records in one operation
  • Ordnen Sie problemlos Datensätzen mithilfe einer n: n-Beziehung zu, ohne sich mit der überschneidenen Entität zu befassenEasily associate records using a Many-to-many relationship without concerning yourself with the intersect entity.

Um den Entitätsdatensatz mit diesen APIs zuzuordnen brauchen Sie folgende drei Dinge:To associate entity records with these APIs you need three things:

  • Eine Entitätsreferenz zur Entität, die Sie zuordnen möchtenAn entity reference to the entity you want to associate
  • Der Name der BeziehungThe name of the relationship
  • Eine oder mehrere Referenzen, die Sie der Entität zuordnen möchtenOne or more references that you want to associate the entity to

Ob die Beziehung eine 1: n- oder n: n-Beziehung ist, ist nicht von Bedeutung.Whether the relationship is a one-to-many or many-to-many relationship doesn't matter. Die Parameter oder die Eigenschaften sind gleich.The parameters or properties are equivalent.

Sie können die Namen von Beziehungen finden, indem die die Benutzeroberfläche oder die Metadaten mithilfe des Browsers für Metadaten nutzen.You can discover the names of the relationships by viewing the customization UI or in the metadata using the Metadata Browser. Weitere Informationen:More information:

Das folgende Beispiel stellt eine bestimmte Kontaktentität (jimGlynn) als primären Kontakt fest für alle Firmen in Redmond.The following example will set a specific contact entity (jimGlynn) as the primary contact for all accounts that are in 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);

Obwohl es keinen bestimmten Vorteil auf diese Weise gibt, wenn Sie AssociateRequest verwenden möchten, können Sie die letzten Zeile mit diesem ersetzen:Although there is no particular advantage in doing so, if you wanted to use the AssociateRequest, you can replace the last line with this:

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

svc.Execute(request);

Dieser Code ist identisch mit drei verschiedene Aktualisierungsvorgänge zu Firma.PrimaryContactId Suchattribut, aber auch verwenden die account_primary_contact Beziehung, die eine n: 1-Entitätsbeziehung auf der Firmaenentität und einer 1: n-Entitätsbeziehung für die Kontaktentität ist.This operation is the same as three separate update operations to the Account.PrimaryContactId lookup attribute, but it is using the account_primary_contact relationship, which is a many-to-one entity relationship on the account entity and a one-to-many entity relationship on the contact entity.

Wenn die Eigenschaften der Beziehungsmetadaten überprüfen, sehen Sie, dass der Wert ReferencingEntity ist account und der ReferencingAttribute-Wert ist primarycontactid.If you examine the properties of the relationship metadata, you can see that the ReferencingEntity value is account and the ReferencingAttribute value is primarycontactid.

Nutzen Sie die Trennungsmethode oder DissassociateRequestUse the Disassociate method or DisassociateRequest

Im IOrganizationService.DisassociateThe IOrganizationService.Disassociate Methode oder der DisassociateRequest mit dem IOrganizationServiceExecutemethod or the DisassociateRequest with the IOrganizationService.Execute Methoe ist einfach die umgekehrte Art, wie Sie die Datensätze zuordnen.method are just the reverse of the way that you associate entity records.

Der folgende Code kehrt die Zuordnungen um, die im Beispiel oben gemacht werden.The following code reverses the associations made in the sample above.

// 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);

Obwohl es keinen bestimmten Vorteil auf diese Weise gibt, wenn Sie DisassociateRequest verwenden möchten, können Sie die letzten Zeile mit diesem ersetzen:Although there is no particular advantage in doing so, if you wanted to use the DisassociateRequest, you can replace the last line with this:

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

svc.Execute(request);

Siehe auchSee also

Erstellen von Entitäten mit dem OrganisationsserviceCreate entities using the Organization Service
Abrufen einer Entität mithilfe des OrganisationsdienstesRetrieve an entity using the Organization Service
Aktualisieren und Löschen von Entitäten mit dem OrganisationsserviceUpdate and Delete entities using the Organization Service