Arbeiten mit Alternativschlüsseln
Alle Microsoft Dataverse-Tabellenzeilen besitzen eindeutige Bezeichner, die als GUIDs definiert werden. Diese sind der Primärschlüssel für jede Tabelle. Wenn Sie mit einem externen Datenspeicher integrieren müssen, können Sie möglicherweise eine Spalte zu externen Datenbanktabellen hinzufügen, sodass ein Verweis zum eindeutigen Bezeichner in Dataverse-Apps vorhanden ist. Dies ermöglicht einen lokalen Verweis für einen Link zu der Dataverse-Zeile. Manchmal können Sie jedoch die externe Datenbank nicht ändern. Mit alternativen Schlüsseln können Sie nun eine Spalte in einer Dataverse-Tabelle so definieren, dass sie einem eindeutigen Bezeichner (oder einer eindeutigen Kombination von Spalten) entspricht, der von dem externen Datenspeicher verwendet wird. Sie können diesen Alternativschlüssel anstelle des Primärschlüssels verwenden, um eine Zeile in Dataverse eindeutig zu identifizieren. Sie müssen in der Lage sein zu definieren, welche Spalten eine eindeutige Identität für Ihre Zeilen darstellen. Sobald Sie die Spalten identifiziert haben, die für die Tabelle eindeutig sind, können Sie sie über die angepasste Benutzeroberfläche (UI) oder im Code als alternative Schlüssel deklarieren. Dieses Thema enthält Informationen zum Festlegen von Alternativschlüsseln im Datenmodell.
Erstellen Sie Alternativschlüssel
Sie können Alternativschlüssel programmgesteuert erstellen oder mithilfe der Anpassungstools. Weitere Informationen zur Verwendung der Anpassungstools finden Sie unter Definieren von Alternativschlüsseln mithilfe von Power Apps.
Um Alternativschlüssel programmgesteuert zu definieren, müssen Sie zunächst ein Objekt des Typs EntityKeyMetadata erstellen (oder EntityKeyMetadata EntityType, wenn Sie mit Web-API arbeiten). Diese Klasse enthält die Schlüsselspalten. Sobald die Schlüsselspalten festgelegt sind, können Sie CreateEntityKey
verwenden, um die Schlüssel für eine Tabelle zu erstellen. Diese Nachricht nimmt den Tabellennamen und die EntityKeyMetadata
-Werte als Eingabe, um den Schlüssel zu erstellen.
Sie sollten folgende Einschränkungen berücksichtigen, wenn Alternativschlüssel erstellt werden:
Gültige Spalten in Schlüssel-Tabellen-Definitionen
Nur Spalten der folgenden Typen können in Definitionen von alternativen Schlüsseltabellen enthalten sein:
Spaltentyp Anzeigename DecimalAttributeMetadata Dezimalzahl IntegerAttributeMetadata Ganze Zahl StringAttributeMetadata Einzelne Textzeile DateTimeAttributeMetadata Datum/Uhrzeit LookupAttributeMetadata Suchfeld PicklistAttributeMetadata Optionssatz Gültige Schlüsselgröße
Wenn ein Schlüssel erstellt wurde, überprüft das System, ob dieser Schlüssel von der Plattform unterstützt werden kann, u. a. auch, ob die Gesamtschlüsselgröße nicht gegen die SQL-basierten Indexeinschränkungen verstößt, zum Beispiel 900 Bytes pro Schlüssel und 16 Spalten pro Schlüssel. Wenn die Schlüsselgröße nicht die Einschränkungen erfüllt, wird eine Fehlermeldung angezeigt.
Maximale Anzahl von alternativen Schlüsseltabellendefinitionen für eine Tabelle
Es kann maximal zehn alternative Schlüsseltabellendefinitionen für eine Tabelle in einer Dataverse-Instanz geben.
Unicode-Zeichen im Schlüsselwert
Wenn die Daten in einer Spalte, die in einem alternativen Schlüssel verwendet wird, eines der folgenden Zeichen enthalten
/
,<
,>
,*
,%
,&
,:
,\\
,?
,+
, dann funktionieren die Aktionen retrieve (GET
), update oder upsert (PATCH
) nicht. Wenn Sie nur Eindeutigkeit benötigen, reicht dieser Ansatz aus, wenn Sie jedoch diese Schlüssel im Rahmen der Datenintegration benötigen, sollten Sie den Schlüssel besser in Spalten ohne Daten mit diesen Zeichen erstellen.Nicht unterstützt in virtuellen Tabellen
Alternative Schlüssel werden in virtuellen Tabellen nicht unterstützt, da wir die Eindeutigkeit nicht erzwingen können, wenn sich die Daten auf einem anderen System befinden. Weitere Informationen: Erste Schritte mit virtuellen Tabellen (Entitäten)
Abrufen und Löschen von Alternativschlüsseln
Wenn Sie Alternativschlüssel abrufen oder löschen müssen, können Sie die Anpassungs-Benutzeroberfläche dazu verwenden, dies ohne Code zu schreiben zu erledigen. Dennoch bietet das SDK die folgenden beiden Nachrichten, um Alternativschlüssel programmgesteuert abzurufen und zu löschen.
Meldungsanforderungsklasse | Beschreibung |
---|---|
RetrieveEntityKeyRequest | Ruft den angegebenen Alternativschlüssel ab. |
DeleteEntityKeyRequest | Löscht den angegebenen Alternativschlüssel. |
Um alle Schlüssel für eine Tabelle abzurufen, verwenden Sie die Eigenschaft Keys der Klasse EntityMetadata
(EntityMetadata EntityType oder EntityMetadata). Sie liefert ein Array von Schlüsseln für eine Tabelle.
Verwenden Sie diese Web-API-Abfrage, um alle Tabellen anzuzeigen und zu sehen, welche alternative Schlüssel haben:
GET [Organization URI]/api/data/v9.2/EntityDefinitions?$select=SchemaName&$expand=Keys($select=KeyAttributes)
Einige Beispiele, die von dieser Anfrage zurückgegeben werden:
{
"SchemaName": "Account",
"MetadataId": "70816501-edb9-4740-a16c-6a5efbc05d84",
"Keys": [
{
"KeyAttributes": [
"accountnumber"
],
"MetadataId": "1dc7b1d2-6beb-ec11-bb3d-0022482ea769"
}
]
},
{
"SchemaName": "example_Table",
"MetadataId": "8f521e41-8934-ec11-b6e6-002248242f3b",
"Keys": [
{
"KeyAttributes": [
"example_key1",
"example_key2"
],
"MetadataId": "2f16d0c6-88ea-ec11-bb3d-0022482ea769"
}
]
}
Überwachen der Indexerstellung für Alternativschlüssel
Alternativschlüssel nutzen Datenbankindizes um eine Eindeutigkeit zu gewährleisten und die Suchenleistung und zu optimieren. Wenn es viele vorhandener Datensätze in einer Tabelle gibt, dann kann die Indexerstellung lange dauern. Sie können das Reaktionsvermögen der Anpassungs-Benutzeroberfläche und den Lösungsimporte optimieren, indem Sie die Indexerstellung als Hintergrundprozess ausführen. Die EntityKeyMetadata.AsyncJob
-Eigenschaft (EntityKeyMetadata EntityType oder EntityKeyMetadata) bezieht sich auf den asynchronen Auftrag, der die Indexerstellung vornimmt. Die Eigenschaft EntityKeyMetadata.EntityKeyIndexStatus
gibt den Status des Schlüssels als seinen Indexerstellungs-Auftragsstatus an. Der Status kann einer der folgenden sein:
- Ausstehend
- In Bearbeitung
- Aktiv
- Fehler
Wenn ein Alternativschlüssel mithilfe der API erstellt wird, können Sie, wenn bei der Indexerstellung ein Fehler auftritt, Details über die Ursache des Fehlers einsehen, die Probleme beheben und die Schlüsselanforderung erneut aktivieren mithilfe der ReactivateEntityKey
(ReactivateEntityKey Action oder ReactivateEntityKeyRequest-Meldung).
Wenn der Alternativschlüssel gelöscht wird, während ein Indexerstellungsauftrag noch ausstehend oder in Verarbeitung ist, wird der Auftrag abgebrochen und der Index gelöscht.
Siehe auch
Verwenden Sie einen Alternativschlüssel, um auf einen Datensatz zu verweisen
Synchronisieren von Daten mit externen Systemen mithilfe der Änderungsnachverfolgung
Einen Datensatz mit Upsert einfügen oder aktualisieren
Definieren von Alternativschlüsseln für den Verweis auf Datensätze
Hinweis
Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)
Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für