Élément NavigationProperty (CSDL)
Un élément NavigationProperty définit une propriété de navigation, qui fournit une référence à l'autre terminaison d'une association. Contrairement aux propriétés définies à l'aide de l'élément Property, les propriétés de navigation ne définissent pas la forme et les caractéristiques des données. Elles fournissent un moyen d'explorer une association entre deux types d'entités.
Notez que les propriétés de navigation sont facultatives sur les deux types d'entités au niveau des terminaisons d'une association. Si vous définissez une propriété de navigation sur un type d'entité au niveau de la terminaison d'une association, il n'est pas nécessaire de définir une propriété de navigation sur le type d'entité à l'autre terminaison de l'association.
Le type de données retourné par une propriété de navigation est déterminé par la multiplicité de sa terminaison d'association distante. Par exemple, considérez une propriété de navigation, OrdersNavProp, qui existe sur un type d'entité Customer et qui navigue dans une association un-à-plusieurs entre Customer et Order. Étant donné que la terminaison d'association distante pour la propriété de navigation a une multiplicité égale à plusieurs (*), son type de données est une collection (d'Order). De même, si une propriété de navigation, CustomerNavProp, existe sur le type d'entité Order, son type de données sera Customer, car la multiplicité de la terminaison distante est un (1).
Un élément NavigationProperty peut avoir les éléments enfants suivants (dans l'ordre répertorié) :
Documentation (zéro ou un élément) ;
éléments d'annotation (zéro, un ou plusieurs éléments).
Attributs applicables
Le tableau ci-dessous décrit les attributs qui peuvent s'appliquer à l'élément NavigationProperty.
Nom d'attribut | Requis | Valeur |
---|---|---|
Name |
Oui |
Nom de la propriété de navigation. |
Relationship |
Oui |
Nom d'une association figurant dans l'étendue du modèle. |
ToRole |
Oui |
Terminaison de l'association à laquelle la navigation prend fin. La valeur de l'attribut ToRole doit être égale à la valeur de l'un des attributs Role définis au niveau d'une des terminaisons de l'association (définie dans l'élément AssociationEnd). |
FromRole |
Oui |
Terminaison de l'association où la navigation commence. La valeur de l'attribut FromRole doit être égale à la valeur de l'un des attributs Role définis au niveau d'une des terminaisons de l'association (définie dans l'élément AssociationEnd). |
Remarque : |
---|
Un nombre quelconque d'attributs d'annotation (attributs XML personnalisés) peut être appliqué à l'élément NavigationProperty.Toutefois, les attributs personnalisés ne peuvent pas appartenir à un espace de noms XML réservé pour le langage CSDL.Les noms qualifiés complets de deux attributs personnalisés quelconques ne peuvent pas être identiques. |
Exemple
L'exemple suivant définit un type d'entité (Book) avec deux propriétés de navigation (PublishedBy et WrittenBy) :
<EntityType Name="Book">
<Key>
<PropertyRef Name="ISBN" />
</Key>
<Property Type="String" Name="ISBN" Nullable="false" />
<Property Type="String" Name="Title" Nullable="false" />
<Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
<NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
FromRole="Book" ToRole="Publisher" />
<NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
FromRole="Book" ToRole="Author" />
</EntityType>
Voir aussi
Concepts
Vue d'ensemble d'Entity Framework
Spécification CSDL
Élément Schema (CSDL)
Autres ressources
Spécifications CSDL, SSDL et MSL
ADO.NET Entity Data Model Tools
navigation property (Entity Data Model)