Compartir a través de


Elemento NavigationProperty (CSDL EntityType)

En Entity Data Model (EDM), un elemento NavigationProperty declara un acceso directo que se utiliza para navegar en las entidades relacionadas por el tipo Association.

Por ejemplo, si se define un elemento Association entre un tipo Employee y otro tipo Employee que está designado como gerente, se puede especificar una propiedad de navegación en la entidad Employee para navegar del elemento Employee subordinado al gerente o del gerente al empleado subordinado.

El siguiente extracto del segmento de Human Relations del esquema AdventureWorksHRModel define la entidad Employee y el elemento Association entre entidades Employee que designa algunos empleados como gerentes. Observe que el elemento Association se produce entre entidades del mismo tipo pero de un atributo Role diferente.

El elemento Association declara una asociación denominada Employee_Employee_ManagerID. El único atributo diferenciador de las entidades Employee en los extremos de esta asociación es el atributo Role especificado en la definición de AssociationSet. El último atributo Role especifica EmployeeManager.

El atributo Multiplicity de los elementos End de la declaración Association especifica que un elemento Employee puede ser el gerente de cero o más empleados. Un elemento Employee sólo puede tener un gerente designado por el atributo RoleEmployeeManager.

  <EntityType Name="Employee" Key="EmployeeID">
    <Key>
        <PropertyRef Name="EmployeeID">
    </Key>
    <Property Name="EmployeeID" Type="Int32" Nullable="false" />
    <!-- Other properties omitted for brevity-->

<NavigationProperty Name="Employee1" 
Relationship="Adventureworks.FK_Employee_Employee_ManagerID" 
FromRole="Employee" ToRole="Employee1" />  </EntityType>

<NavigationProperty Name="Employee2" 
Relationship="Adventureworks.FK_Employee_Employee_ManagerID" 
FromRole="Employee1" ToRole="Employee" />

  <EntityContainer Name="HumanResources">

    <EntitySet Name="Employee" EntityType="Adventureworks.Employee" />

    <AssociationSet Name="FK_Employee_Employee_ManagerID"
      Association="Adventureworks.FK_Employee_Employee_ManagerID">
        <End Role="Employee" EntitySet="Employee" />
        <End Role="Employee1" EntitySet="Employee" />
    </AssociationSet>

  </EntityContainer>

El elemento NavigationProperty es un acceso directo a la entidad Employee que es gerente de la entidad Employee que contiene el elemento NavigationProperty. Cuando se genera el modelo de objetos basado en estas especificaciones, la clase Employee incluye una propiedad Manager y métodos auxiliares que se utilizan para navegar en la asociación designada por el elemento NavigationProperty. Los métodos auxiliares se generan automáticamente con el modelo de objetos.

Las propiedades de navegación se pueden utilizar para implementar propiedades que funcionen como colecciones en el código. Para obtener más información acerca de colecciones y propiedades de navegación, vea Propiedades de navegación (EDM).

El elemento NavigationProperty sólo se usa en el lenguaje de definición de esquemas conceptuales (CSDL). Hay un homólogo en los metadatos del lenguaje de definición de esquemas de almacenamiento (SSDL) para especificar las relaciones entre la clave principal y la clave externa en la base de datos que admite esta asociación. En los metadatos, esta asociación incluye una restricción referencial. Para obtener más información sobre el atributo ReferentialConstraint, vea Elemento ReferentialConstraint (SSDL Association) y Elemento Association (SSDL).

Vea también

Conceptos

Relaciones del Entity Data Model
Elemento Association (CSDL)
Atributo Multiplicity (CSDL Association)
Modelo completo (EDM) de AdventureWorks
Propiedades de navegación (EDM)
Elemento Association (SSDL)
Elemento ReferentialConstraint (SSDL Association)