Suchen mit mehreren Tabellen
Suchtypspalten mit mehreren Tabellen ermöglichen es einem Benutzer, eine bestimmte Tabelle zu verwenden, die mehrere Eins-zu-Viele-(1:N-)Beziehungen mit anderen Tabellen in der Umgebung hat. Eine einzelne Suchtypspalte kann auf mehrere andere Tabellen verweisen. Ein Suchfeld, das an die Spalte des Typs 'Multi-Table' gesendet wird, wird mit einem Datensatz in einer der Bezugstabellen abgeglichen. Suchvorgänge in mehreren Tabellen können sowohl mit lokalen Tabellen und virtuellen Tabellen als auch mit referenzierten Tabellen erstellt werden.
Typen mit mehreren Tabellen sind derzeit in Microsoft Dataverse als statische Typen wie „Kunde“ integriert, das eine Verbindung zu „Konto“ und „Kontakt“ herstellt. Dieses neue Feature gibt Benutzenden die Möglichkeit, beliebige andere Suchen mit mehreren Tabellen zu definieren, die sie unter Umständen benötigen.
Hinweis
Zu diesem Zeitpunkt können Benutzer benutzerdefinierte Suchen mit mehreren Tabellen über das SDK oder Web-APIs erstellen und ändern. Die Unterstützung der interaktiven Benutzeroberfläche wird in einer zukünftigen Version verfügbar sein.
Beispiele
Nehmen wir an, Sie hosten Medien für Benutzer in einer Bibliothek. Sie haben viele verschiedene Medienobjekte, von denen viele den gleichen Namen haben, aber in unterschiedlichen Formaten wie Bücher, Audio und Video vorliegen. Das Erstellen eines Suchfelds für mehrere Tabellen mit dem Namen new_Media
, das 1:N-Beziehungen zu new_Books
, new_Audio
und new_Video
hat, führt zu einem new_Media
Suchfeld, das eine schnelle Identifizierung von Datensätzen ermöglicht, die in bestimmten Tabellen gespeichert sind.
„new_Media“-Suchtabelle
PrimaryID | PrimaryName | RelatedID | Zugehöriger Name |
---|---|---|---|
<media1> | MediaObjectOne |
<books1> | Content1 |
<media2> | MediaObjectTwo |
<audio1> | Content1 |
<media3> | MediaObjectThree |
<video1> | Content3 |
<media4> | MediaObjectFour |
<audio2> | Content3 |
„new_Books“-Tabelle
PrimaryID | PrimaryName | CallNumber |
---|---|---|
<books1> | Content1 |
1ww-3452 |
<books2> | Content2 |
a4e-87hw |
„new_Audio“-Tabelle
PrimaryID | PrimaryName | AudioFormat |
---|---|---|
<audio1> | Content1 |
mp4 |
<audio2> | Content3 |
wma |
„new_Video“-Tabelle
PrimaryID | PrimaryName | VideoFormat |
---|---|---|
<video1> | Content3 |
wmv |
<video2> | Content2 |
avi |
Die Mediensuche kann in der polymorphen Suche Datensätze über alle Tabellen zurückgeben.
Eine Suche auf Medien mit dem Namen
Content1
würde Datensätze für <books1> und <audio1> abrufenEine Suche auf Medien mit dem Namen
Content3
würde Datensätze für <audio2> und <video1> abrufen
Beispiel für eine Web-API
Das folgende HTTP-POST
-Anforderung erstellt ein polymorphes Suchattribut.
Anfordern
POST [Organization URI]/api/data/v9.2/CreatePolymorphicLookupAttribute HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"OneToManyRelationships": [
{
"SchemaName": "new_media_new_book",
"ReferencedEntity": "new_book",
"ReferencingEntity": "new_media"
},
{
"SchemaName": "new_media_new_video",
"ReferencedEntity": "new_video",
"ReferencingEntity": "new_media"
},
{
"SchemaName": "new_media_new_audio",
"ReferencedEntity": "new_audio",
"ReferencingEntity": "new_media",
"CascadeConfiguration": {
"Assign": "NoCascade",
"Delete": "RemoveLink",
"Merge": "NoCascade",
"Reparent": "NoCascade",
"Share": "NoCascade",
"Unshare": "NoCascade"
}
}
],
"Lookup": {
"AttributeType": "Lookup",
"AttributeTypeName": {
"Value": "LookupType"
},
"Description": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Media Polymorphic Lookup",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": " Media Polymorphic Lookup Attribute",
"LanguageCode": 1033
}
},
"DisplayName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "MediaPolymorphicLookup",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "MediaPolymorphicLookup",
"LanguageCode": 1033
}
},
"SchemaName": "new_mediaPolymporphicLookup",
"@odata.type": "Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata"
}
}
Bei dem folgenden JSON handelt es sich um den Textkörper der Antwort der HTTP-POST
-Anforderung, welcher die ID des polymorphen Attributs und alle erstellten Beziehungen enthält.
{
"@odata.context":
"http://<organization URL>/api/data/v9.1/$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"
}
Verwenden Sie die Suchfeld-APIs für mehrere Tabellen
Die folgende Tabelle listet die Vorgänge auf, die für Tabellen- und Attributdefinitionen relevant sind.
Vorgang (Method) |
Beschreibung | URL-Format |
---|---|---|
Erzeugen (POST) |
Neue API | [OrganizationUrl]/api/data/v9.2 /CreatePolymorphicLookupAttribute |
Attribute abrufen (GET) |
Vorhandene API | [OrganizationUrl]/api/data/v9.2 /EntityDefinitions(<EntityId>)/Attributes(<AttributeId>) |
Beziehung abrufen (GET) |
Vorhandene API | [OrganizationUrl]/api/data/v9.2 /RelationshipDefinitions(<RelationshipId>) |
Beziehung hinzufügen (POST) |
Fügt eine Beziehung zu einer bestehenden polymorphen Suche hinzu attribute |
[OrganizationUrl]/api/data/v9.2 /RelationshipDefinitions |
Beziehung entfernen (DELETE) |
Vorhandene API | [OrganizationUrl]/api/data/v9.2 /RelationshipDefinitions(<RelationshipId>) |
Attribut entfernen (DELETE) |
Vorhandene API | [OrganizationUrl]/api/data/v9.2 /EntityDefinitions(<EntityId>)/Attributes(<AttributeId>) |
Die folgende Tabelle listet die Vorgänge auf, die für Tabellen- und Attributdaten relevant sind.
Operation (Methode) |
Beschreibung | URL-Format |
---|---|---|
Erzeugen (POST) |
Siehe das folgende new_checkouts -Beispiel |
[OrganizationUrl]/api/data/v9.2 /<entitysetName> |
Retrieve (GET) |
Fügen Sie den folgenden Header hinzu, um Anmerkungen zu erhalten: Inhaltstyp: application/json |
[OrganizationUrl]/api/data/v9.2 /<entitysetName>(<recordId>) |
Die folgende Beispielanforderung, die einen neuen Datensatz mit zwei Zeilen erstellt.
POST [OrganizationUrl]/api/data/v9.1/new_checkouts
{
"new_name": "c1",
new_CheckedoutItem_new_book@odata.bind: "/new_books(387a2c9b-ecc6-ea11-a81e-000d3af68bd7)"
}
{
"new_name": "c2",
new_CheckedoutItem_new_device@odata.bind: "/new_devices(6472e7ba-ecc6-ea11-a81e-000d3af68bd7)"
}
Polymorphe Suche erstellen (Beispiel Nutzlast)
POST [OrganizationUrl]/api/data/v9.2/CreatePolymorphicLookupAttribute
{
"OneToManyRelationships": [
{
"SchemaName": "new_checkout_poly_new_book",
"ReferencedEntity": "new_book",
"ReferencingEntity": "new_checkout"
},
{
"SchemaName": "new_checkout_poly_new_device",
"ReferencedEntity": "new_device",
"ReferencingEntity": "new_checkout"
},
{
"SchemaName": "new_checkout_poly_new_dvd",
"ReferencedEntity": "new_dvd",
"ReferencingEntity": "new_checkout",
"CascadeConfiguration": {
"Assign": "NoCascade",
"Delete": "RemoveLink",
"Merge": "NoCascade",
"Reparent": "NoCascade",
"Share": "NoCascade",
"Unshare": "NoCascade"
}
}
],
"Lookup": {
"AttributeType": "Lookup",
"AttributeTypeName": {
"Value": "LookupType"
},
"Description": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkouted item Polymorphic Lookup Attribute",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkedout item Polymorphic Lookup Attribute",
"LanguageCode": 1033
}
},
"DisplayName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkedout item",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkedout item",
"LanguageCode": 1033
}
},
"SchemaName": "new_CheckedoutItem",
"@odata.type": "Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata"
}
}
Beziehung zu vorhandener polymorpher Suche hinzufügen (Beispiel Payload)
POST [OrganizationUrl]/api/data/v9.2/RelationshipDefinitions
{
"SchemaName": "new_checkout_poly_new_researchresource",
"@odata.type": "Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata",
"CascadeConfiguration": {
"Assign": "NoCascade",
"Delete": "RemoveLink",
"Merge": "NoCascade",
"Reparent": "NoCascade",
"Share": "NoCascade",
"Unshare": "NoCascade"
},
"ReferencedEntity": "new_researchresource",
"ReferencingEntity": "new_checkout",
"Lookup": {
"AttributeType": "Lookup",
"AttributeTypeName": { "Value": "LookupType" },
"Description": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkout Polymorphic Lookup Attribute",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkout Polymorphic Lookup Attribute",
"LanguageCode": 1033
}
},
"DisplayName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkout item",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkout item",
"LanguageCode": 1033
}
},
"SchemaName": "new_CheckedoutItem",
"@odata.type": "Microsoft.Dynamics.CRM.LookupAttributeMetadata"
}
}
Siehe auch
Verwenden Sie die Web-API mit Tabellendefinitionen
Erstellen und Aktualisieren von Tabellenbeziehungen
Abfragen von Tabellendefinitionen mithilfe der Web-API
Rufen Sie Tabellendefinitionen nach Name oder MetadataId ab
Modellieren Sie Tabellen und Spalten mithilfe der Web-API
Beispiel für Web-API-Tabellenschemavorgänge
Beispiel für Web-API-Tabellenschemavorgänge (C#)