Partager via


Propriété de navigation

Une propriété de navigation est une propriété facultative sur un type d’entité qui permet la navigation d’une extrémité d’une association à l’autre extrémité. Contrairement à d’autres propriétés, les propriétés de navigation ne comportent pas de données.

Une définition de propriété de navigation inclut les éléments suivants :

  • Un 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é à la fin d’une association, vous n’avez pas besoin de définir une propriété de navigation sur le type d’entité à l’autre extrémité de l’association.

Le type de données d’une propriété de navigation est déterminé par la multiplicité de sa fin d’association distante. Par exemple, supposons qu’une propriété de navigation, OrdersNavProp existe sur un type d’entité Customer et navigue dans une relation 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 existe CustomerNavPropsur le Order type d’entité, son type de données serait Customer, car la multiplicité de la fin distante est une (1).

Exemple :

Le diagramme ci-dessous montre un modèle conceptuel avec trois types d’entités : Book, Publisheret Author. Les propriétés de navigation Publisher et Authors sont définies sur le type d’entité Book. La propriété Books de navigation est définie à la fois sur le type d’entité Publisher et sur le type d’entité Author .

Diagramme montrant un modèle conceptuel avec trois types d’entités.

Le ADO.NET Entity Framework utilise un langage spécifique au domaine (DSL) appelé langage de définition de schéma conceptuel (CSDL) pour définir des modèles conceptuels. Le langage CSDL suivant définit le Book type d’entité indiqué 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>

Les 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 qu’il navigue et FromRoleToRole contient les extrémités de l’association.

Voir aussi