Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mithilfe von Spalten vom Typ "Mehrfachtabellen", die manchmal als polymorphe Nachschlagevorgänge bezeichnet werden, können Sie eine bestimmte Tabelle mit mehreren 1:N-Beziehungen zu anderen Tabellen in der Umgebung verwenden. Eine einzelne Suchtypspalte kann auf mehrere andere Tabellen verweisen. Ein an die Mehrtabellentypspalte übermittelter Nachschlagewert entspricht einem Datensatz in einer der verknüpften Tabellen. Sie können Mehrtabellen-Nachschlagevorgänge sowohl mit lokalen Tabellen als auch mit virtuellen Tabellen als Referenztabellen erstellen.
Microsoft Dataverse enthält derzeit Mehrtabellentypen als statische Typen, z. B. Customer, die eine Verbindung mit Account und ContactTabellen herstellt. Mithilfe von Nachschlagevorgängen mit mehreren Tabellen können Sie alle anderen mehrstufigen Nachschlagevorgänge definieren, die Sie benötigen.
Anmerkung
Sie können benutzerdefinierte Mehrtabellen-Nachschlagevorgänge über das SDK für .NET- oder Dataverse-Web-API erstellen und ändern. Interaktive Benutzeroberflächenunterstützung wird in einer zukünftigen Version verfügbar sein.
Beispiel: Web-API-Mehrtabellen-Nachschlagebeispiel (PowerShell) enthält den Beispielcode, der das in diesem Artikel präsentierte Beispiel veranschaulicht.
Abrufen von Daten zu verknüpften Tabellen
Um Informationen über verwandte Tabellen mit einer Nachschlagespalte abzurufen, einschließlich Nachschlagevorgängen mit mehreren Tabellen, verwenden Sie eine der folgenden Methoden: Rufen Sie die Nachschlageeigenschaft ab oder erweitern Sie die einzelwertige Navigierungseigenschaft.
Abrufen der Nachschlageparameter
Jede Nachschlagespalte verfügt über eine entsprechende Nachschlageeigenschaft, die Sie mithilfe der Abfrageoption abrufen können. Diese Eigenschaften folgen der Benennungskonvention: . ist der logische Name der Nachschlagespalte. Der Wert der Nachschlageeigenschaft ist der eindeutige Bezeichner für den zugehörigen Datensatz, falls vorhanden.
Bei einem Nachschlagevorgang mit mehreren Tabellen ist die eindeutige ID nicht hilfreich, es sei denn, Sie wissen, auf welche Tabelle sie angewendet wird. Wenn Sie Daten aus einer beliebigen Nachschlagespalte abrufen, können Sie die folgenden OData-Anmerkungseinstellungen anwenden. Diese Einstellungsoptionen sind besonders nützlich bei einem Mehrtabellen-Nachschlagevorgang, da sie mehr Daten aus dem zugehörigen Datensatz und Informationen darüber bereitstellen, aus welcher Tabelle die Daten stammen.
| Annotation | Beschreibung |
|---|---|
OData.Community.Display.V1.FormattedValue |
Gibt den Primärnamenspaltenwert für den in dieser Spalte derzeit festgelegten Datensatz zurück. |
Microsoft.Dynamics.CRM.associatednavigationproperty |
Gibt den Namen der einzelwertigen Navigationseigenschaft zurück, die den aktuell in dieser Spalte festgelegten Datensatz unterstützt. |
Microsoft.Dynamics.CRM.lookuplogicalname |
Gibt den logischen Namen der Tabelle für den aktuell in dieser Spalte festgelegten Datensatz zurück. |
Anmerkung
Verwenden Sie Nachschlageeigenschaften, um den formatierten Wert abzurufen und unterstützende Metadaten abzurufen, die zum Erweitern der einzelwertigen Navigationseigenschaft erforderlich sind, um weitere Informationen zu erhalten.
Erfahren Sie mehr über das Abrufen von Nachschlageeigenschaftendaten.
Erweitern Sie die einzelwertige Navigationseigenschaft
Wenn Sie einen Nachschlagevorgang mit mehreren Tabellen erstellen, erfordert jede Tabelle eine separate 1:n-Beziehung. Jede Beziehung fügt eine eindeutige einzelwertige Navigationseigenschaft hinzu.
Der Name dieser einzelwertigen Navigationseigenschaft wird in der OneToManyRelationshipMetadata.ReferencingEntityNavigationPropertyName-Eigenschaft gespeichert. Ein häufiger Fehler ist, wenn Benutzer versuchen, den Wert dieser groß-/kleinschreibungsabhängigen Eigenschaft zu erraten. Es gibt drei Möglichkeiten, den richtigen Namen dieser Navigationseigenschaft endgültig zu bestimmen:
- Dient zum Abrufen der Beziehungsmetadaten. Erfahren Sie mehr über Optionen zum Abrufen von Dataverse-Schemadefinitionen.
- Laden Sie das CSDL-$metadata Dokument herunter, und überprüfen Sie es. Erfahren Sie, wie Sie diese Einzelwertnavigationseigenschaften im $metadata-Dienstdokument identifizieren.
-
Abrufen des Suchattributs und die
Microsoft.Dynamics.CRM.associatednavigationpropertyOData-Anmerkungspräferenzen einschließen.
Wenn Sie die Tabelle abfragen, verwenden Sie die Abfrageoption mit der einzelwertigen Navigationseigenschaft, um die zugehörige Tabelle einzuschließen. Erfahren Sie mehr über das Verknüpfen verwandter Tabellen mithilfe der OData-Abfrageoption.
Beispiel
Angenommen, Sie hosten Medien für Benutzer in einer Bibliothek. Sie haben viele verschiedene Medienobjekte. Viele von ihnen haben denselben Namen, sind aber in verschiedenen Formaten wie Bücher, Audio und Video.
In diesem Beispiel unterstützen drei Tabellen jede bestimmte Medienart:
- enthält und Spalten.
- enthält Spalten.
- enthält und Spalten.
Die Tabelle weist einen Mehrtabellen-Nachschlagevorgang mit dem Schemanamen auf. Sie können die Nachschlagespalte so festlegen, dass sie auf Datensätze in einer der drei spezifischen Medientabellen verweist.
Tabelle
Die Tabelle ist die erste der drei verknüpften Tabellen. Diese einfache Abfrage ruft die beiden In dieser Tabelle gefundenen Datensätze ab.
GET [Organization URI]/api/data/v9.2/sample_books?$select=sample_name,sample_callnumber
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Dieses Beispiel zeigt den JSON-Textkörper der Antwort:
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#sample_books(sample_name,sample_callnumber)",
"value": [
{
"@odata.etag": "W/\"171704230\"",
"sample_callnumber": "ww-3452 ",
"sample_bookid": "00000000-0000-0000-0000-000000000001",
"sample_name": "Content1"
},
{
"@odata.etag": "W/\"171704235\"",
"sample_callnumber": "a4e-87hw",
"sample_bookid": "00000000-0000-0000-0000-000000000005",
"sample_name": "Content2"
}
]
}
Tabelle
Die Tabelle ist die zweite der drei verknüpften Tabellen. Diese einfache Abfrage ruft die beiden Datensätze in dieser Tabelle ab.
GET [Organization URI]/api/data/v9.2/sample_audios?$select=sample_name,sample_audioformat
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Dieses Beispiel zeigt den JSON-Textkörper der Antwort:
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#sample_audios(sample_name,sample_audioformat)",
"value": [
{
"@odata.etag": "W/\"171704242\"",
"sample_audioid": "00000000-0000-0000-0000-000000000002",
"sample_audioformat": "mp4",
"sample_name": "Content1"
},
{
"@odata.etag": "W/\"171704246\"",
"sample_audioid": "00000000-0000-0000-0000-000000000004",
"sample_audioformat": "wma",
"sample_name": "Content3"
}
]
}
Tabelle
Die Tabelle ist die dritte der drei zusammenhängenden Tabellen. Diese einfache Abfrage ruft die beiden Datensätze in dieser Tabelle ab.
GET [Organization URI]/api/data/v9.2/sample_videos?$select=sample_name,sample_videoformat
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Dieses Beispiel zeigt den JSON-Textkörper der Antwort:
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#sample_videos(sample_name,sample_videoformat)",
"value": [
{
"@odata.etag": "W/\"171704254\"",
"sample_name": "Content2",
"sample_videoformat": "avi",
"sample_videoid": "00000000-0000-0000-0000-000000000006"
},
{
"@odata.etag": "W/\"171704250\"",
"sample_name": "Content3",
"sample_videoformat": "wmv",
"sample_videoid": "00000000-0000-0000-0000-000000000003"
}
]
}
Tabelle
Diese Tabelle enthält die Mehrtabellen-Nachschlagespalte mit dem Schemanamen und dem logischen Namen.
Für diese Demonstration enthält diese Tabelle nur vier Datensätze, die mit unterstützenden Datensätzen zusammenhängen:
sample_name |
-Wert | -Typ |
|---|---|---|
| Medienobjekt 1 | 00000000-0000-0000-0000-000000000001 | sample_book |
| Medienobjekt 2 | 00000000-0000-0000-0000-000000000002 | sample_audio |
| Media-Objekt 3 | 00000000-0000-0000-0000-000000000003 | sample_video |
| Media-Objekt 4 | 00000000-0000-0000-0000-000000000004 | sample_audio |
Abrufen verwandter Daten
Anhand der Tabelle wird die folgende Beispielabfrage veranschaulicht:
- Wählt die Nachschlageeigenschaft in der Abfrageoption für die Nachschlagespalte aus. Mithilfe der Einstellungen
OData.Community.Display.V1.FormattedValue,Microsoft.Dynamics.CRM.associatednavigationpropertyundMicrosoft.Dynamics.CRM.lookuplogicalnameodata.include-annotationserhalten Sie diese Werte mit jedem Datensatz. - Erweitert drei einzelwertige Navigationseigenschaften, eine für jede verknüpfte Tabelle. Für jede erweiterte Navigationseigenschaft wird die primäre Namensspalte () sowie der entsprechende benutzerdefinierte Spaltenwert ausgewählt: , , .
Anmerkung
Nur eine von drei erweiterten einzelwertigen Navigationen könnte Daten enthalten. Alle drei werden null sein, wenn die Suche-Spalte nicht festgelegt ist.
Diese Vorgänge veranschaulichen, wie die Tabellendatensätze über die Nachschlagespalte verknüpft sind.
Anforderung
GET [Organization URI]
/api/data/v9.2/sample_medias
?$select=sample_name,_sample_mediapolymorphiclookup_value
&$expand=sample_MediaPolymorphicLookup_sample_book(
$select=sample_name,sample_callnumber),
sample_MediaPolymorphicLookup_sample_audio(
$select=sample_name,sample_audioformat),
sample_MediaPolymorphicLookup_sample_video(
$select=sample_name,sample_videoformat)
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue,Microsoft.Dynamics.CRM.associatednavigationproperty,Microsoft.Dynamics.CRM.lookuplogicalname"
Anmerkung
Zur Lesbarkeit wird die URL über mehrere Zeilen hinweg angezeigt. Entfernen Sie beim Erstellen der Anforderung alle Zeilenumbrüche und Leerzeichen, sodass die URL eine einzelne fortlaufende Zeichenfolge ist.
Antwort
Wenn Sie diese Abfrageoptionen und Einstellungsheader festlegen, enthält der Textkörper der Antwort den folgenden JSON-Code:
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#sample_medias(sample_name,_sample_mediapolymorphiclookup_value,sample_MediaPolymorphicLookup_sample_book(sample_name),sample_MediaPolymorphicLookup_sample_audio(sample_name,sample_audioformat),sample_MediaPolymorphicLookup_sample_video(sample_name))",
"value": [
{
"@odata.etag": "W/\"171704264\"",
"sample_mediaid": "00000000-0000-0000-0000-000000000007",
"sample_name": "Media Object One",
"_sample_mediapolymorphiclookup_value@OData.Community.Display.V1.FormattedValue": "Content1",
"_sample_mediapolymorphiclookup_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "sample_MediaPolymorphicLookup_sample_book",
"_sample_mediapolymorphiclookup_value@Microsoft.Dynamics.CRM.lookuplogicalname": "sample_book",
"_sample_mediapolymorphiclookup_value": "00000000-0000-0000-0000-000000000001",
"sample_MediaPolymorphicLookup_sample_book": {
"sample_bookid": "00000000-0000-0000-0000-000000000001",
"sample_name": "Content1",
"sample_callnumber": "ww-3452"
},
"sample_MediaPolymorphicLookup_sample_audio": null,
"sample_MediaPolymorphicLookup_sample_video": null
},
{
"@odata.etag": "W/\"171704268\"",
"sample_mediaid": "00000000-0000-0000-0000-000000000008",
"sample_name": "Media Object Two",
"_sample_mediapolymorphiclookup_value@OData.Community.Display.V1.FormattedValue": "Content1",
"_sample_mediapolymorphiclookup_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "sample_MediaPolymorphicLookup_sample_audio",
"_sample_mediapolymorphiclookup_value@Microsoft.Dynamics.CRM.lookuplogicalname": "sample_audio",
"_sample_mediapolymorphiclookup_value": "00000000-0000-0000-0000-000000000002",
"sample_MediaPolymorphicLookup_sample_book": null,
"sample_MediaPolymorphicLookup_sample_audio": {
"sample_audioid": "00000000-0000-0000-0000-000000000002",
"sample_name": "Content1",
"sample_audioformat": "mp4"
},
"sample_MediaPolymorphicLookup_sample_video": null
},
{
"@odata.etag": "W/\"171704273\"",
"sample_mediaid": "00000000-0000-0000-0000-000000000009",
"sample_name": "Media Object Three",
"_sample_mediapolymorphiclookup_value@OData.Community.Display.V1.FormattedValue": "Content3",
"_sample_mediapolymorphiclookup_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "sample_MediaPolymorphicLookup_sample_video",
"_sample_mediapolymorphiclookup_value@Microsoft.Dynamics.CRM.lookuplogicalname": "sample_video",
"_sample_mediapolymorphiclookup_value": "00000000-0000-0000-0000-000000000003",
"sample_MediaPolymorphicLookup_sample_book": null,
"sample_MediaPolymorphicLookup_sample_audio": null,
"sample_MediaPolymorphicLookup_sample_video": {
"sample_videoid": "00000000-0000-0000-0000-000000000003",
"sample_name": "Content3",
"sample_videoformat": "wmv"
}
},
{
"@odata.etag": "W/\"171704279\"",
"sample_mediaid": "00000000-0000-0000-0000-000000000010",
"sample_name": "Media Object Four",
"_sample_mediapolymorphiclookup_value@OData.Community.Display.V1.FormattedValue": "Content3",
"_sample_mediapolymorphiclookup_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "sample_MediaPolymorphicLookup_sample_audio",
"_sample_mediapolymorphiclookup_value@Microsoft.Dynamics.CRM.lookuplogicalname": "sample_audio",
"_sample_mediapolymorphiclookup_value": "00000000-0000-0000-0000-000000000004",
"sample_MediaPolymorphicLookup_sample_book": null,
"sample_MediaPolymorphicLookup_sample_audio": {
"sample_audioid": "00000000-0000-0000-0000-000000000004",
"sample_name": "Content3",
"sample_audioformat": "wma"
},
"sample_MediaPolymorphicLookup_sample_video": null
}
]
}
Festlegen einer Nachschlagespalte mit mehreren Tabellen
Das Aktualisieren eines Datensatzes zum Festlegen einer polymorphen Nachschlagespalte erfolgt genau so, wie in „Associate with a single-valued navigation property“ beschrieben. Verwenden Sie den richtigen Namen der Navigationseigenschaft mit Einzelwert. Bei diesen Namen wird die Groß-/Kleinschreibung beachtet.
In diesem Beispiel wird das Aktualisieren eines Wertes mithilfe von .
Anforderung
PATCH [Organization Uri]/api/data/v9.2/sample_medias(00000000-0000-0000-0000-000000000007) HTTP/1.1
If-Match: *
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json
{
"sample_MediaPolymorphicLookup_sample_book@odata.bind": "sample_books(00000000-0000-0000-0000-000000000001)"
}
Antwort
HTTP/1.1 204 NoContent
OData-Version: 4.0
Erstellen einer Nachschlagespalte mit mehreren Tabellen
Anmerkung
Das folgende Beispiel zeigt, wie die Dataverse-Web-API verwendet wird. Sie können das SDK auch für .NET mit den Klassen CreatePolymorphicLookupAttributeRequest und CreatePolymorphicLookupAttributeResponse verwenden.
Verwenden Sie die Aktion "Polymorphisches Lookup-Attribut erstellen", um mehrere Tabellen nachzuschlagen. In diesem Beispiel wird die Spalte als Teil einer Lösung mit dem eindeutigen Namen mithilfe von MSCRM erstellt. Optionaler Parameter SolutionUniqueName.
Anforderung
POST [Organization URI]/api/data/v9.2/CreatePolymorphicLookupAttribute HTTP/1.1
Consistency: Strong
Accept: application/json
OData-MaxVersion: 4.0
Authorization: Bearer [REDACTED]
MSCRM.SolutionUniqueName: polymorphiclookupexamplesolution
OData-Version: 4.0
{
"OneToManyRelationships": [
{
"ReferencedEntity": "sample_book",
"SchemaName": "sample_media_sample_book",
"ReferencingEntity": "sample_media"
},
{
"ReferencedEntity": "sample_audio",
"SchemaName": "sample_media_sample_audio",
"ReferencingEntity": "sample_media",
"CascadeConfiguration": {
"Assign": "NoCascade",
"Share": "NoCascade",
"Delete": "RemoveLink",
"Merge": "NoCascade",
"Reparent": "NoCascade",
"Unshare": "NoCascade"
}
},
{
"ReferencedEntity": "sample_video",
"SchemaName": "sample_media_sample_video",
"ReferencingEntity": "sample_media",
"CascadeConfiguration": {
"Assign": "NoCascade",
"Share": "NoCascade",
"Delete": "RemoveLink",
"Merge": "NoCascade",
"Reparent": "NoCascade",
"Unshare": "NoCascade"
}
}
],
"Lookup": {
"AttributeTypeName": {
"Value": "LookupType"
},
"SchemaName": "sample_MediaPolymorphicLookup",
"Description": {
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Polymorphic lookup that can reference a Book, Audio, or Video record",
"LanguageCode": 1033
}
],
"@odata.type": "Microsoft.Dynamics.CRM.Label"
},
"AttributeType": "Lookup",
"DisplayName": {
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Media",
"LanguageCode": 1033
}
],
"@odata.type": "Microsoft.Dynamics.CRM.Label"
},
"@odata.type": "Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata"
}
}
Das folgende JSON ist ein Beispiel für den CreatePolymorphicLookupAttributeResponse ComplexType. Sie enthält die ID des polymorphen Attributs und alle erstellten Beziehungen.
{
"@odata.context":
"http://<organization URL>/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.CreatePolymorphicLookupAttributeResponse",
"RelationshipIds":[
"77d4c6e9-0397-eb11-a81c-000d3a6cfaba",
"7ed4c6e9-0397-eb11-a81c-000d3a6cfaba",
"85d4c6e9-0397-eb11-a81c-000d3a6cfaba"
],
"AttributeId":"d378dd3e-42f4-4bd7-95c7-0ee546c7de40"
}
Hinzufügen einer Beziehung zu einer vorhandenen Mehrtabellen-Nachschlagespalte
Das Hinzufügen einer Beziehung zu einer bestehenden Multi-Tabellen-Nachschlage-Spalte über die Web-API ist vergleichbar mit dem Erstellen einer neuen 1-zu-viele-Beziehung. Erfahren Sie, wie Sie eine 1-zu-n-Beziehung mithilfe der Web-API erstellen. Der Unterschied besteht darin, dass die OneToManyRelationshipMetadata-Eigenschaft einen Wert aufweisen muss, der der vorhandenen polymorphen Nachschlagespalte entspricht.
Entfernen einer Beziehung aus einer vorhandenen Mehrtabellen-Nachschlagespalte
Das Entfernen einer Beziehung aus einer vorhandenen Mehrtabellen-Nachschlagespalte mithilfe der Web-API entspricht dem Löschen einer Eins-zu-viele-Beziehung. Senden Sie eine Anforderung an den Endpunkt, indem Sie den Wert der OneToManyRelationshipMetadata-Eigenschaft als Schlüssel verwenden.
Siehe auch
Beispiel: Web-API-Mehrtabellen-Nachschlagebeispiel (PowerShell)
Web-API mit Tabellendefinitionen verwenden
Tabellenbeziehungen erstellen und aktualisieren
Abfragen von Tabellendefinitionen mithilfe der Web-API
Tabellendefinitionen nach Name oder MetadataId abrufen
Tabellen und Spalten mithilfe der Web-API modellieren
Beispiel für Web-API-Tabellenschemavorgänge
Beispiel für Web-API-Tabellenschemavorgänge (C#)