Propiedad de navegación

Una propiedad de navegación es una propiedad opcional de un tipo de entidad que permite navegar desde un extremo de una asociación al otro. A diferencia de otras propiedades, las de navegación no transportan datos.

Una definición de propiedad de desplazamiento incluye lo siguiente:

  • Un nombre. (Requerido)

  • La asociación que navega. (Requerido)

  • Los extremos de la asociación que navega. (Requerido)

Las propiedades de navegación son opcionales en los dos tipos de entidad de los extremos de una asociación. Si define una propiedad de navegación en un tipo de entidad del extremo de una asociación, no tiene que definir una propiedad de navegación en el tipo de entidad del otro extremo de la asociación.

La multiplicidad de su extremo de la asociación remoto determina el tipo de datos de una propiedad de navegación. Por ejemplo, supongamos que una propiedad de navegación, OrdersNavProp, existe en un tipo de entidad Customer y navega a una asociación uno a varios entre Customer y Order. Dado que el extremo remoto de la asociación para la propiedad de navegación tiene la multiplicidad de muchos (*), su tipo de datos es una colección (de Order). De igual forma, si una propiedad de navegación, CustomerNavProp, existe en el tipo de entidad Order, su tipo de datos sería Customer, porque la multiplicidad del extremo remoto es uno (1).

Ejemplo

El diagrama siguiente muestra un modelo conceptual con tres tipos de entidades: Book, Publisher y Author. Las propiedades de navegación Publisher y Authors se definen en el tipo de entidad Book. La propiedad de navegación Books se define en el tipo de entidad Publisher y el tipo de entidad Author.

Diagram showing a conceptual model with three entity types.

ADO.NET Entity Framework usa un lenguaje específico de dominio (DSL) denominado lenguaje de definición de esquemas conceptuales (CSDL) para definir los modelos conceptuales. El siguiente CSDL define el tipo de entidad Book mostrado en el diagrama anterior.

<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>

Los atributos de XML permiten comunicar la información necesaria para definir una propiedad de navegación: el atributo Name contiene el nombre de la propiedad, Relationship contiene el nombre de la asociación que navega, y FromRole y ToRole contienen los extremos de la asociación.

Consulte también