Propriétés de navigation de l’API web
Au sein du document de $métadonnées CSDL, chaque type d’entité qui n’est pas abstrait aura des éléments NavigationProperty
. Les éléments NavigationProperty
décrivent les données relatives au type d’entité actuel. Lorsque vous récupérez un enregistrement, vous pouvez développer les propriétés de navigation pour inclure les données associées.
Le tableau suivant décrit les attributs des éléments NavigationProperty
.
Attribute | Description |
---|---|
Name |
Nom de la propriété de navigation ; sensible à la casse |
Type |
Le type d’entité associé ; il peut s’agir d’une valeur unique ou d’une collection d’un type |
Partner |
Le nom de la propriété de navigation de l’autre côté de la relation |
Nullable="false" |
Indique si la valeur peut être nulle |
Important
Il existe deux types de propriétés de navigation : à valeur unique et à valeur de collection. Cette distinction est importante, car les capacités de chaque type de propriété de navigation sont différentes.
Propriétés de navigation à valeur unique
Lorsqu’une propriété de navigation Type
fait référence à une valeur unique, elle représente une relation un-à-plusieurs pour définir une référence à un autre enregistrement de table. Cette relation est généralement appelée une recherche. L’exemple suivant est la propriété de navigation createdby
de la table account
:
<NavigationProperty
Name="createdby"
Type="mscrm.systemuser"
Nullable="false"
Partner="lk_accountbase_createdby">
<ReferentialConstraint
Property="_createdby_value"
ReferencedProperty="systemuserid" />
</NavigationProperty>
Cette propriété de navigation à valeur unique connecte plusieurs enregistrements account
à un seul enregistrement systemuser
. Chaque enregistrement systemuser
aura une propriété de navigation à valeur de collection nommée lk_accountbase_createdby
qui les relie aux enregistrements account
créés.
Ces valeurs sont stockées dans des définitions de relation. Vous pouvez y accéder à l’aide du SDK OneToManyRelationshipMetadata ou du type d’entité API Web OneToManyRelationshipMetadata, comme décrit dans la table suivante.
Attribute | Propriété OneToManyRelationshipMetadata | Description |
---|---|---|
Name |
ReferencingEntityNavigationPropertyName |
Nom de la propriété de navigation à valeur unique. |
Partner |
ReferencedEntityNavigationPropertyName |
Nom de la propriété de navigation à valeur de collection. |
Propriétés de recherche
Les propriétés de navigation à valeur unique ont un ReferentialConstraint
avec un attribut Property
qui fait référence à une propriété de recherche. Les propriétés de recherche utilisent la convention de dénomination suivante : _<name>_value
. Découvrir les propriétés de recherche.
La ReferentialConstraint
a un attribut ReferencedProperty
qui identifie le nom de la clé primaire du type d’entité associé.
Dans la plupart des cas, le <name>
trouvé dans la propriété de recherche correspond au nom de la propriété de navigation, sauf si la propriété de navigation à valeur unique représente une recherche multi-tables.
Recherches multi-tables
Lorsque la propriété de navigation à valeur unique fait partie d’une recherche multi-tables (ou polymorphe), il y aura une seule propriété de recherche qui est la ReferentialConstraint
pour plusieurs propriétés de navigation à valeur unique.
Un type d’entité peut avoir quelque chose comme la combinaison suivante où une seule propriété de recherche _customerid_value
prend en charge plusieurs propriétés de navigation à valeur unique qui représentent une recherche multi-tables. Il y aura une propriété de navigation à valeur unique pour chaque type de table pris en charge par la recherche multi-tables.
<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>
Dans ces cas, la définition de la valeur de l’une des propriétés de navigation à valeur unique définit toutes les autres propriétés de navigation à valeur unique participantes sur null. La valeur GUID de la propriété de recherche correspondante changera, mais vous devrez récupérer des annotations spécifiques disponibles pour savoir à quelle table elle fait maintenant référence. Plus d’informations : Rechercher les données de propriété
Propriétés de navigation à valeur de collection
Lorsqu’une propriété de navigation Type
fait référence à une valeur de collection, elle représente une relation plusieurs-à-un ou plusieurs-à-plusieurs. L‘exemple suivant est la propriété de navigation Account_Tasks
de l’entité de compte :
<NavigationProperty
Name="Account_Tasks"
Type="Collection(mscrm.task)"
Partner="regardingobjectid_account_task"
/>
Cette propriété de navigation connecte un enregistrement account
à plusieurs enregistrements task
. Chaque task
possède une propriété de navigation à valeur unique nommée regardingobjectid_account_task
qui fait référence au account
comme objet relatif.
La façon dont vous utilisez les propriétés de navigation à valeur de collection à l’aide d’OData est la même, que la relation soit une relation un-à-plusieurs ou plusieurs-à-plusieurs. Les deux sont considérées comme des collections et vous interagissez avec elles de la même manière.
Relations plusieurs-à-un
Une relation plusieurs-à-un est l’image miroir de la relation un-à-plusieurs. Elle aura une propriété de navigation partenaire à valeur unique. Dans l’exemple Propriétés de navigation à valeur unique précédent, nous avons regardé la propriété à valeur unique createdby
pour l’entité de type account
.
Au sein du type d’entité systemuser
, vous trouverez le partenaire de propriété de navigation à valeur de collection nommé lk_accountbase_createdby
.
<NavigationProperty Name="lk_accountbase_createdby"
Type="Collection(mscrm.account)"
Partner="createdby" />
Relations plusieurs-à-plusieurs
Lorsque le Name
et le Partner
de la propriété de navigation à valeur de collection sont identiques, cela représente une relation plusieurs-à-plusieurs.
Les relations plusieurs-à-plusieurs ont des détails de mise en œuvre que vous pouvez trouver dans les documents de service. Dans la plupart des cas d’utilisation, vous pouvez les ignorer.
Par exemple, chaque relation plusieurs-à-plusieurs a une table d’intersection qui la prend en charge. Ces tables d’intersection ont des types d’entité qui n’ont généralement que 4 propriétés en lecture seule. Ce qui suit est un exemple d’entité de type teammembership
qui est une table d’intersection qui prend en charge une relation plusieurs-à-plusieurs entre les entités de type systemuser
et team
.
<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>
Vous ne pouvez pas utiliser les types d’entités qui représentent directement des tables d’intersection, car toutes les propriétés sont en lecture seule. Effectuez des opérations sur les propriétés de navigation à valeur de collection respectives pour chaque type d’entité. Plus d’informations : Associer et dissocier les lignes de table à l’aide de l’API web
Pour cette relation plusieurs à plusieurs, l’entité de type systemuser
a cette propriété de navigation à valeur de collection :
<NavigationProperty Name="teammembership_association"
Type="Collection(mscrm.team)"
Partner="teammembership_association" />
L’entité de type team
a cette propriété de navigation à valeur de collection :
<NavigationProperty Name="teammembership_association"
Type="Collection(mscrm.systemuser)"
Partner="teammembership_association" />
Ces valeurs sont stockées dans des définitions de relation. Vous pouvez y accéder à l’aide du SDK ManyToManyRelationshipMetadata ou du type d’entité API Web ManyToManyRelationshipMetadata, comme décrit dans la table suivante.
Attribute | Propriété ManyToManyRelationshipMetadata | Description |
---|---|---|
Name |
Entity1NavigationPropertyName |
Nom de la propriété de navigation avec une valeur de collection prise en charge pour un de ces types d’entité |
Partner |
Entity2NavigationPropertyName |
Nom de la propriété de navigation avec une valeur de collection prise en charge pour l’autre type d’entité |
Étapes suivantes
Découvrez les définitions d’action.
Voir aussi
Types d’API web et opérations
Documents de service de l’API web
EntityTypes de l’API web
Propriétés de l’API web
Actions de l’API web
Fonctions de l’API web
Types Complex et Enumeration de l’API web
Utiliser l’API Web Dataverse
Partie 3 de la version 4.0 d’OData : Common Schema Definition Language (CSDL) Plus Errata 03 7.1 Element edm:NavigationProperty
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).