Freigeben über


Zuordnen und Aufheben der Zuordnung von Tabellenzeilen über das SDK für .NET

Tabellenzeilen werden einander mithilfe von Nachschlagespalten in der zugehörigen Tabellenzeile zugeordnet. Die einfachste Möglichkeit, zwei Zeilen in einer 1:n-Beziehung einander zuzuordnen, ist die Verwendung einer EntityReference, um den Wert einer Nachschlagespalte in der zugehörigen Zeile festzulegen.

Die einfachste Möglichkeit, die Zuordnung von zwei Zeilen in einer 1:N-Beziehung aufzuheben, ist, den Wert der Nachschlagespalte auf null festzulegen.

Beziehungen mit einer N:N-Beziehung sind auch von Nachschlagespalten für die überschneidende Entität abhängig, die die N:N-Beziehung unterstützt. Beziehungen werden durch das Vorhandensein von Zeilen in dieser überschneidenden Entität definiert. Wenn Sie mit der überschneidendem Entität direkt interagieren können, ist es viel einfacher, die API dafür zu verwenden.

Nutzen Sie die Zuordnungsmethode doder AssociateRequest

Der Hauptwert bei der Verwendung der IOrganizationServiceAssociate-Methode oder der AssociateRequest mit der IOrganizationService.Execute-Methode besteht darin, dass Sie Folgendes tun können:

  • Zuordnen mehrerer Zeilen zu einem Vorgang
  • Ordnen Sie Zeilen ganz einfach mithilfe einer N:N-Beziehung zu, ohne sich über die überschneidende Entität Gedanken machen zu müssen.

Um Tabellenzeilen diesen APIs zuzuordnen, benötigen Sie drei Dinge:

  • Eine Entitätsreferenz auf die Zeile, die Sie zuordnen möchten.
  • Der Name der Beziehung
  • Eine oder mehrere Referenzen, denen Sie die Tabellenzeile zuordnen möchten.

Ob die Beziehung eine 1: n- oder n: n-Beziehung ist, ist nicht von Bedeutung. Die Parameter oder die Eigenschaften sind gleich.

Sie können die Namen von Beziehungen finden, indem die die Benutzeroberfläche oder die Metadaten mithilfe des Browsers für Metadaten nutzen.

Weitere Informationen:

Im folgenden Beispiel wird eine Beziehung erstellt und eine primäre Entität einer Auflistung verknüpfter Entitäten zugeordnet.

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

Vollständiger Beispielcode: AssociateDisassociate

Wenn Sie die AssociateRequest verwenden möchten, verwenden Sie den folgenden Code. Ein Vorteil der Verwendung der Anforderung anstelle der Dienstclientmethode besteht darin, dass die Anforderung die Verwendung optionaler Parameter unterstützt.

AssociateRequest request = new AssociateRequest()
{
RelatedEntities = relatedEntities,
Relationship = relation,
Target = primaryEntity
};

service.Execute(request);

Angenommen, wir verknüpfen eine primäre Entität (einen Kontakt) mit drei verwandten Entitäten (Konten). Dieser oben gezeigte einzelne Zuordnungsvorgang ist derselbe wie drei separate Aktualisierungsvorgänge, bei denen die Suchspalte Account.PrimaryContactId festgelegt wird. Stattdessen wird bei der einfacheren Dienstclientmethode oder dem Anforderungsaufruf die account_primary_contact Beziehung verwendet, die eine n:1-Entitätsbeziehung für jedes verknüpfte Konto und eine 1:n-Entitätsbeziehung für den Kontakt herstellt.

Wenn Sie die Eigenschaften der Beziehungsspalten untersuchen, werden Sie feststellen, dass ReferencingEntity auf den Wert account festgelegt ist und ReferencingAttribute auf den Wert primarycontactid.

Nutzen Sie die Trennungsmethode oder DissassociateRequest

Die IOrganizationService.Disassociate Methode oder die DisassociateRequest mit der IOrganizationService.Execute -Methode sind genau das Gegenteil der Art und Weise, wie Sie Tabellenzeilen verknüpfen.

Sie können einen Beispielaufruf der Disassociate-Methode im zuvor gezeigten Codebeispiel anzeigen. Wenn Sie die DisassociateRequest verwenden möchten, würde der Code wie folgt aussehen:

DisassociateRequest request = new DisassociateRequest()
{
RelatedEntities = relatedEntities,
Relationship = relation,
Target = primaryEntity
};

service.Execute(request);

Siehe auch

Tabellenzeilen mit dem SDK für .NET erstellen
Abrufen einer Tabellenzeile über die SDK für .NET
Aktualisieren und Löschen von Tabellenzeilen über die SDK für .NET