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.
Im CSDL-$metadata Dokument enthält NavigationProperty jeder Entitätstyp, der nicht abstrahiert ist, Elemente.
NavigationProperty Elemente beschreiben Daten, die sich auf den aktuellen Entitätstyp beziehen. Wenn Sie einen Datensatz abrufen, können Sie Navigationseigenschaften erweitern, um verwandte Daten einzuschließen.
In der folgenden Tabelle werden die Attribute von NavigationProperty Elementen beschrieben.
| Merkmal | Description |
|---|---|
Name |
Der Name der Navigationseigenschaft; Groß- und Kleinschreibung wird beachtet |
Type |
Der zugehörige Entitätstyp; kann ein einzelner Wert oder eine Sammlung eines Typs sein. |
Partner |
Der Name der Navigationseigenschaft auf der anderen Seite der Beziehung |
Nullable="false" |
Gibt an, ob der Wert null sein kann. |
Von Bedeutung
Es gibt zwei Typen von Navigationseigenschaften: Einzelwertig und Sammlungswertig. Diese Unterscheidung ist wichtig, da die Funktionen der einzelnen Navigationseigenschaften unterschiedlich sind.
Einzelwertige Navigationseigenschaften
Wenn eine Navigationseigenschaft Type auf einen einzelnen Wert verweist, stellt sie eine eins-zu-viele Beziehung dar, der einen Verweis auf einen anderen Tabellendatensatz erstellt. Diese Beziehung wird häufig als Nachschlagevorgang bezeichnet. Das folgende Beispiel ist die account Tabellennavigationseigenschaft createdby :
<NavigationProperty
Name="createdby"
Type="mscrm.systemuser"
Nullable="false"
Partner="lk_accountbase_createdby">
<ReferentialConstraint
Property="_createdby_value"
ReferencedProperty="systemuserid" />
</NavigationProperty>
Diese einzelwertige Navigationseigenschaft verbindet mehrere account Datensätze mit einem einzelnen systemuser Datensatz. Jeder systemuser Datensatz verfügt über eine sammlungswertige Navigationseigenschaft mit dem Namen lk_accountbase_createdby , die ihn mit den Datensätzen verbindet, die account der Benutzer erstellt hat.
Diese Werte werden in Beziehungsdefinitionen gespeichert. Sie können mithilfe des SDK OneToManyRelationshipMetadata oder des Web-API-Entitätstyps OneToManyRelationshipMetadata darauf zugreifen, wie in der folgenden Tabelle beschrieben.
| Merkmal | OneToManyRelationshipMetadata-Eigenschaft | Description |
|---|---|---|
Name |
ReferencingEntityNavigationPropertyName |
Der Name der einzelwertigen Navigationseigenschaft. |
Partner |
ReferencedEntityNavigationPropertyName |
Der Name der sammlungswertigen Navigationseigenschaft. |
Sucheigenschaften
Einwertige Navigationseigenschaften haben eine ReferentialConstraint mit einem Property-Attribut, das auf eine Lookup-Eigenschaft verweist. Nachschlageeigenschaften verwenden die folgende Benennungskonvention: _<name>_value.
Mehr über Nachschlageeigenschaften erfahren.
Das Attribut ReferentialConstraint weist ein ReferencedProperty Attribut auf, das den Primärschlüsselnamen des zugehörigen Entitätstyps identifiziert.
In den meisten Fällen stimmt die <name> in der Lookup-Eigenschaft mit dem Namen der Navigationseigenschaft überein, außer wenn die Navigationseigenschaft mit einem Wert ein Suchfeld mit mehreren Tabellen darstellt.
Suchen mit mehreren Tabellen
Wenn die einwertige Navigationseigenschaft Teil eines polymorphen Suchfelds mit mehreren Tabellen ist, ist ein einziges Suchfeld die ReferentialConstraint für mehr als eine einwertige Navigationseigenschaft.
Ein Typ einer Entität kann etwa die folgende Kombination aufweisen, bei der eine einzelne _customerid_value Suchfeld-Eigenschaft mehrere einwertige Navigationseigenschaften unterstützt, die ein Suchfeld mit mehreren Tabellen darstellen. Für jeden Tabellentyp, der von der Mehrtabellensuche unterstützt wird, gibt es eine einzelwertige Navigationseigenschaft.
<EntityType
Name="socialprofile"
BaseType="mscrm.crmbaseentity">
<Key>
<PropertyRef Name="socialprofileid" />
</Key>
<Property
Name="_customerid_value" <!-- lookup property -->
Type="Edm.Guid">
<Annotation
Term="Org.OData.Core.V1.Description"
String="Shows the customer that this social profile belongs to." />
</Property>
<NavigationProperty
Name="customerid_contact" <!-- Name different from lookup property -->
Type="mscrm.contact"
Nullable="false"
Partner="Socialprofile_customer_contacts">
<ReferentialConstraint
Property="_customerid_value" <!-- Reference to lookup property -->
ReferencedProperty="contactid" />
</NavigationProperty>
<NavigationProperty
Name="customerid_account" <!-- Name different from lookup property -->
Type="mscrm.account"
Nullable="false"
Partner="Socialprofile_customer_accounts">
<ReferentialConstraint
Property="_customerid_value" <!-- Reference to lookup property -->
ReferencedProperty="accountid" />
</NavigationProperty>
</EntityType>
In diesen Fällen wird durch Festlegen des Werts einer der einwertigen Navigationseigenschaften alle anderen beteiligten einzelwertigen Navigationseigenschaften auf NULL festgelegt. Der entsprechende GUID-Wert der Nachschlageeigenschaft ändert sich, aber Sie müssen bestimmte Anmerkungen abrufen, um zu wissen, auf welche Tabelle sie sich jetzt bezieht. Weitere Informationen: Suche Dateneigenschaft
Gemeinsam bewertete Navigationseigenschaften
Wenn sich eine Type-Navigationseigenschaft auf einen Sammlungswert bezieht, steht sie für eine N:1- oder N:N-Beziehung. Das folgende Beispiel ist die Navigationseigenschaft Account_Tasks der Entität „Konto“:
<NavigationProperty
Name="Account_Tasks"
Type="Collection(mscrm.task)"
Partner="regardingobjectid_account_task"
/>
Diese Navigationseigenschaft verbindet einen account Datensatz mit vielen Datensätzen task . Jede task hat eine einwertige Navigationseigenschaft namens regardingobjectid_account_task, die das account als das betreffende Objekt referenziert.
Die Art und Weise, wie Sie mit sammlungsbewerteten Navigationseigenschaften unter Verwendung von OData arbeiten, ist dieselbe, unabhängig davon, ob es sich um eine n:m- oder m:m-Beziehung handelt. Beide werden als Sammlungen betrachtet, und Sie interagieren auf die gleiche Weise mit ihnen.
Viele-zu-eins-Beziehungen
Eine Viele-zu-Eins-Beziehung ist das Spiegelbild der Eins-zu-Viele-Beziehung. Es hat eine Partner-Eigenschaft für die Navigation mit einem Wert. Im vorherigen Beispiel für einzelwertige Navigationseigenschaften haben wir uns die createdby Einzelwert-Navigationseigenschaft für den account Entitätstyp angesehen.
Im Typ systemuser der Entität existiert die Navigationseigenschaft collection-valued partner mit dem Namen lk_accountbase_createdby.
<NavigationProperty Name="lk_accountbase_createdby"
Type="Collection(mscrm.account)"
Partner="createdby" />
Viele-zu-Viele-Beziehungen
Wenn der Name und der Partner der sammlungswertigen Navigationseigenschaften gleich sind, steht dies für eine N:N-Beziehung.
Viele-zu-viele-Beziehungen haben einige Implementierungsdetails, die Sie in den Dienstdokumenten finden können. Bei den meisten Anwendungsfällen können Sie sie ignorieren.
Zum Beispiel hat jede n:m-Beziehung eine Überschneidungstabelle, die sie unterstützt. Diese Intersect-Tabellen haben Typen von Entitäten, die normalerweise vier schreibgeschützte Eigenschaften haben. Im folgenden Beispiel ist der teammembership Entitätstyp eine Verknüpfungstabelle, die eine Viele-zu-Viele-Beziehung zwischen den systemuser und team Entitätstypen unterstützt.
<EntityType Name="teammembership"
BaseType="mscrm.crmbaseentity">
<Key>
<PropertyRef Name="teammembershipid" />
</Key>
<Property Name="systemuserid"
Type="Edm.Guid" />
<Property Name="versionnumber"
Type="Edm.Int64" />
<Property Name="teammembershipid"
Type="Edm.Guid" />
<Property Name="teamid"
Type="Edm.Guid" />
</EntityType>
Sie können nicht direkt mit Entitätstypen arbeiten, die Schnittstabellen repräsentieren, da alle Eigenschaften nur Lesezugriff haben. Führen Sie Operationen für die jeweiligen sammlungswertigen Navigationseigenschaften für jeden Entitätstyp durch. Weitere Informationen: Zuordnen und Aufheben der Zuordnung von Tabellenzeilen mithilfe der Web-API
Für diese m:m-Beziehung hat der Typ systemuser Entität die folgende Navigationseigenschaft mit dem Wert einer Sammlung:
<NavigationProperty Name="teammembership_association"
Type="Collection(mscrm.team)"
Partner="teammembership_association" />
Der Entitätstyp team weist diese Sammlungswert-Navigationseigenschaft auf:
<NavigationProperty Name="teammembership_association"
Type="Collection(mscrm.systemuser)"
Partner="teammembership_association" />
Diese Werte werden in Beziehungsdefinitionen gespeichert. Sie können mithilfe des SDK ManyToManyRelationshipMetadata oder des Web-API-Entitätstyps ManyToManyRelationshipMetadata darauf zugreifen, wie in der folgenden Tabelle beschrieben.
| Merkmal | ManyToManyRelationshipMetadata-Eigenschaft | Description |
|---|---|---|
Name |
Entity1NavigationPropertyName |
Der Name der sammlungswertigen Navigationseigenschaft für einen der Typen von Entitäten |
Partner |
Entity2NavigationPropertyName |
Der Name der Navigationseigenschaft mit dem Wert „collection“ für den anderen Typ der Entität |
Nächste Schritte
Erfahren Sie mehr über Aktionsdefinitionen.
Siehe auch
Web-API-Typen und -Vorgänge
Web-API-Dienstdokumente
Web-API EntityTypes
Web-API-Eigenschaften
Web-API-Aktionen
Web-API-Funktionen
Komplexe Web-API- und Enumerationstypen
Verwenden der Dataverse-Web-API
OData Version 4.0. Teil 3: Common Schema Definition Language (CSDL) Plus Errata 03 7.1 Element edm:NavigationProperty