Verwenden Sie einen Alternativschlüssel, um auf einen Datensatz zu verweisen

Verwenden Sie alternative Schlüssel mit Datenintegrationsszenarien, um Datenvorgänge auszuführen, wenn Sie den Primärschlüsselwert eines Dataverse-Datensatzes nicht kennen. Sie können alternative Schlüssel nur für Tabellen verwenden, in denen sie definiert sind. Die meisten Dataverse-Tabellen verfügen nicht über alternative Schlüssel, es sei denn, Sie passen sie so an, dass sie alternative Schlüssel enthalten.

Wenn Sie wissen möchten, wie Sie alternative Schlüssel für eine Tabelle definieren und identifizieren, lesen Sie die folgenden Artikel:

Verwenden Sie entweder die Dataverse-Web-API oder das SDK für .NET, um mit alternativen Schlüsseln zu arbeiten.

Wenn Sie die Web-API verwenden, verweisen Sie mithilfe einer URL auf einen bestimmten Datensatz. Verwenden Sie dann die HTTP-Methoden POST, PATCH oder DELETE, um die Datenoperation auszuführen. Außerdem verwenden Sie URLs, um Werte für Einzelwert-Navigationseigenschaften mithilfe der @odata.bind Syntax oder als Parameter für Funktionen und Aktionen festzulegen.

Die folgende Tabelle enthält Beispiele, die zeigen, wie Sie mithilfe relativer URLs auf Datensätze verweisen:

Situation Beispiel
Mit einem Primärschlüssel /accounts(00000000-0000-0000-0000-000000000001) ODER
accounts(accountid=00000000-0000-0000-0000-000000000001)
Siehe den folgenden Hinweis zu den Typen systemuser und team der Entitäten
Mit einem einzelnen Alternativschlüssel /accounts(accountnumber='ABC123')
Mit mehrteiligen Alternativschlüsseln /contacts(firstname='Joe',emailaddress1='abc@example.com')
Mit einem alternativen Schlüssel, der eine Suchspalte verwendet /accounts(_primarycontactid_value=00000000-0000-0000-0000-000000000002)
Wenn Sie einen alternativen Schlüssel für eine Nachschlagespalte definieren, müssen Sie den Namen der entsprechenden Nachschlageeigenschaft verwenden. Eine Verweiseigenschaft folgt der Namenskonvention _<name of single-valued navigation property>_value.

Anmerkung

Da die Entitätstypen systemuser und team vom Entitätstyp principal erben, können Sie keinen benannten Primärschlüssel verwenden, um auf diese Entitäten zu verweisen. Die Primärschlüssel für diese beiden Entitäten sind ownerid, statt systemuserid oder teamid. Der principal-Entitätstyp unterstützt die GET-Vorgänge nicht. Weitere Informationen: EntityType-Vererbung

Ausnahmen beim Verwenden von Alternativschlüsseln mit der Web-API

Beachten Sie bei der Verwendung alternativer Schlüssel die folgenden Bedingungen und mögliche Ausnahmen:

  • Wenn Sie eine Spalte angeben, die nicht als eindeutiger Schlüssel definiert ist, tritt ein Fehler auf. Die Fehlermeldung ist: The key in the request URI is not valid for resource 'Microsoft.Dynamics.CRM.<table logical name>'. Ensure that the names and number of key properties match the declared or alternate key properties for the resource 'Microsoft.Dynamics.CRM.<table logical name>'.

  • Alternative Schlüsselwerte können einige Sonderzeichen nicht enthalten.

    Alternative Schlüsselwerte mit den folgenden Zeichen /,<,>,*,%,&,:,\\,?,+ werden nicht unterstützt. Diese Sonderzeichen sind in einem URL-Pfadsegment reserviert oder strukturell signifikant. Dataverse gibt einen Fehler zurück, wenn Sie eine GET Anforderung mit diesen Werten innerhalb der Klammern der URL senden. Der Workaround besteht nicht darin, einen einzelnen Datensatz abzurufen, sondern die alternativen Schlüsselwerte mit $filter zu verwenden, um eine Sammlung abzurufen, die den Datensatz enthält, der mit den alternativen Schlüsselwerten übereinstimmt.

    Beispiel: Anstelle dieser Anforderung, die fehlschlägt:

    GET [Organization URI]/api/data/v9.2/new_skts(new_name='M%26M')
    

    Verwenden Sie eine $filter Abfrage:

    GET [Organization URI]/api/data/v9.2/new_skts?$filter=new_name eq 'M%26M'&$select=new_name
    

    Wenn Sie nur auf den Datensatz zugreifen müssen, können Sie die Daten aus dem ersten (und nur) übereinstimmenden Datensatz in der value zurückgegebenen Sammlung übernehmen. Wenn Sie eine andere Aktion ausführen müssen, z. B. das Aktualisieren oder Löschen des Datensatzes, können Sie diesen Ansatz verwenden, um die ID des übereinstimmenden Datensatzes abzurufen und dann auf den Datensatz zu verweisen, der konventionell den ID-Wert anstelle des Werts alternativer Schlüssel verwendet.

    Anmerkung

    Parameteraliasen (@param) funktionieren nicht mit alternativer Schlüsselsyntax. Die Verwendung eines Parameteralias in einem Schlüsseldrädikat gibt einen 400 Fehler auch für Werte ohne Sonderzeichen zurück. Verwenden Sie stattdessen $filter.

Weitere Informationen: Datensatz unter Verwendung eines alternativen Schlüssels abrufen

Siehe auch

Alternativschlüssel für eine Tabelle definieren
Synchronisieren von Daten mit externen Systemen mithilfe der Änderungsnachverfolgung
Einen Datensatz mit Upsert einfügen oder aktualisieren