Teilen über


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> abrufen

  • Eine 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
Bevorzugt: odata.include-annotations="*"

[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#)