Web-API Navigationseigenschaften
Im CSDL $metadata Dokument hat jeder Typ von Entität, der nicht abstrakt ist, NavigationProperty
Elemente. NavigationProperty
-Elemente beschreiben Daten, die sich auf den aktuellen Typ der Entität beziehen. Wenn Sie einen Datensatz abrufen, können Sie festlegen, Navigationseigenschaften zu erweitern, damit zugehörige Daten enthalten sind.
Die folgende Tabelle beschreibt die Attribute der NavigationProperty
-Elemente.
Attribute | Beschreibung |
---|---|
Name |
Der Name der Navigationseigenschaft; Groß- und Kleinschreibung wird beachtet |
Type |
Der Typ der verknüpften Entität; kann sich auf einen einzelnen Wert oder eine Sammlung eines Typs beziehen. |
Partner |
Der Name der Navigationseigenschaft auf der anderen Seite der Beziehung |
Nullable="false" |
Ob der Wert Null sein kann |
Wichtig
Es gibt zwei Typen von Navigationseigenschaften: Einzelwertig und Sammlungswertig. Diese Unterscheidung ist wichtig, weil die Funktionalitäten der einzelnen Typen von Navigationseigenschaften unterschiedlich sind.
Einzelwertige Navigationseigenschaften
Wenn sich eine Navigationseigenschaft Type
auf einen einzelnen Wert bezieht, stellt sie eine n:m-Beziehung dar, die einen Verweis auf einen anderen Datensatz der Tabelle erstellt. Diese Beziehung wird allgemein als Suchfeld bezeichnet. Das folgende Beispiel ist die Navigationseigenschaft account
der Tabelle createdby
:
<NavigationProperty
Name="createdby"
Type="mscrm.systemuser"
Nullable="false"
Partner="lk_accountbase_createdby">
<ReferentialConstraint
Property="_createdby_value"
ReferencedProperty="systemuserid" />
</NavigationProperty>
Diese einwertige Navigationseigenschaft verbindet mehrere account
-Datensätze mit einem einzigen systemuser
-Datensatz. Jeder systemuser
-Datensatz hat eine Navigationseigenschaft mit dem Wert lk_accountbase_createdby
, die ihn mit den account
-Datensätzen verbindet, die der Benutzer erstellt hat.
Diese Werte werden in Beziehungsdefinitionen gespeichert. Sie können über den SDK OneToManyRelationshipMetadata oder den Web-API OneToManyRelationshipMetadata Typ der Entitäten darauf zugreifen, wie in der folgenden Tabelle beschrieben.
Attribute | OneToManyRelationshipMetadata-Eigenschaft | Beschreibung |
---|---|---|
Name |
ReferencingEntityNavigationPropertyName |
Der Name der einwertigen Navigationseigenschaft. |
Partner |
ReferencedEntityNavigationPropertyName |
Der Name der sammlungswertigen Navigationseigenschaft. |
Sucheigenschaften
Einwertige Navigationseigenschaften haben eine ReferentialConstraint
mit einem Property
-Attribut, das auf eine Lookup-Eigenschaft verweist. Suchfeld-Eigenschaften verwenden die folgende Benennungskonvention: _<name>_value
. Lernen Sie mehr über Suchfeld-Eigenschaften.
Das ReferentialConstraint
hat ein ReferencedProperty
-Attribut, 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 Typ von Tabellen, der vom Suchfeld für mehrere Tabellen unterstützt wird, gibt es eine Navigationseigenschaft mit einem Wert.
<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 setzt das Setzen des Wertes einer der einwertigen Navigationseigenschaften alle anderen beteiligten einwertigen Navigationseigenschaften auf Null. Der Wert der entsprechenden Suchfeld-Eigenschaft GUID ändert sich, aber Sie müssen bestimmte Anmerkungen abrufen, um zu wissen, auf welche Tabelle sie sich jetzt bezieht. Weitere Informationen: Eigenschaftsdaten nachschlagen
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 task
-Datensätzen. Jede task
hat eine einwertige Navigationseigenschaft namens regardingobjectid_account_task
die sich auf das account
als betreffendes Objekt bezieht.
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.
n:1-Beziehungen
Eine N:1-Beziehung ist die Spiegelung der 1:N-Beziehung. Es hat eine Partner-Eigenschaft für die Navigation mit einem Wert. Im früheren Einzelwert Navigationseigenschaften Beispiel haben wir uns die Einzelwert Navigationseigenschaft createdby
für den Typ account
Entität 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" />
m:m-Beziehungen
Wenn der Name
und der Partner
der sammlungswertigen Navigationseigenschaften gleich sind, steht dies für eine N:N-Beziehung.
N:N-Beziehungen enthalten einige Implementierungsdetails in den Servicedokumenten. In 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 Entitätstyp teammembership
eine Intersect-Tabelle, die eine m:m-Beziehung zwischen den Entitätstypen systemuser
und team
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 Schnittmengentabellen darstellen, da alle Eigenschaften schreibgeschützt sind. Führen Sie Operationen für die jeweiligen sammlungswertigen Navigationseigenschaften für jeden Entitätstyp durch. Mehr Informationen: Tabellenzeilen mithilfe der Web-API zurordnen und ihre Zuordnung aufheben.
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
hat diese sammlungsbewertete Navigationseigenschaft:
<NavigationProperty Name="teammembership_association"
Type="Collection(mscrm.systemuser)"
Partner="teammembership_association" />
Diese Werte werden in Beziehungsdefinitionen gespeichert. Sie können über den SDK ManyToManyRelationshipMetadata oder den Web-API ManyToManyRelationshipMetadata Typ der Entitäten darauf zugreifen, wie in der folgenden Tabelle beschrieben.
Attribute | ManyToManyRelationshipMetadata-Eigenschaft | Beschreibung |
---|---|---|
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
Internet API-Typen und -Vorgänge
Web-API-Dienstdokumente
Web API EntityTypes
Web-API-Eigenschaften
Web-API-Aktionen
Web-API-Funktionen
Web-API komplexe Typen und Aufzählungstypen
Verwenden Sie die Web-API Dataverse
OData-Version 4.0 Teil 3: Common Schema Definition Language (CSDL) Plus Errata 03 7.1 Element edm:NavigationProperty
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).