Propriété de navigation
Une propriété de navigation est une propriété facultative sur un type d’entité, qui permet de naviguer d’une terminaison d’une association à l’autre terminaison. Contrairement à d’autres propriétés, les propriétés de navigation n’acheminent pas de données.
Une définition de propriété de navigation comprend les éléments suivants :
Nom. (Obligatoire)
Association faisant l'objet de la navigation. (Obligatoire)
Terminaisons de l'association faisant l'objet de la navigation. (Obligatoire)
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 d’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 (de Order
). De même, si une propriété de navigation, CustomerNavProp
, existe sur le type d'entité Order
, son type de données est Customer
, car la multiplicité de la terminaison distante est un (1).
Exemple
Le diagramme suivant montre un modèle conceptuel avec trois types d'entités : Book
, Publisher
et Author
. Les propriétés de navigation, Publisher
et Authors
, sont définies sur le type d’entité Book. La propriété de navigation Books
est définie sur le type d'entité Publisher et le type d'entité Author
.
ADO.NET Entity Framework utilise un langage spécifique à un domaine (DSL), appelé CSDL (Conceptual Schema Definition Language), pour définir des modèles conceptuels. Le CSDL suivant définit le type d'entité Book
présenté dans le diagramme ci-dessus :
<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>
Des attributs XML sont utilisés pour communiquer les informations nécessaires pour définir une propriété de navigation. L’attribut Name
contient le nom de la propriété, Relationship
contient le nom de l’association faisant l’objet de la navigation, et FromRole
et ToRole
contiennent les terminaisons de l’association.