Propiedades de navegación

Las propiedades de navegación de Entity Framework proporcionan una manera de navegar en una asociación entre dos tipos de entidad. Una propiedad de navegación se define mediante el NavigationProperty (Elemento) (CSDL) en el modelo conceptual. Cada objeto puede tener una propiedad de navegación para cada relación en la que participa. Las propiedades de navegación permiten navegar y administrar relaciones en ambas direcciones, devolviendo una EntityReference, si la multiplicidad es uno, o cero o uno, o una EntityCollection, si la multiplicidad es varios. También puede optar por una navegación unidireccional, en cuyo caso puede eliminar la propiedad de navegación; para obtener más información, vea How to: Edit and Delete Navigation Properties.

Al utilizar clases generadas por Entity Framework , se crean propiedades de navegación para los objetos que participan en una relación. Para obtener información sobre cómo trabajar con propiedades de navegación en entidades POCO, vea Requisitos para crear objetos proxy POCO (Entity Framework).

Modificar relaciones

Puede utilizar propiedades de navegación para cambiar una relación. En el siguiente ejemplo se asigna un cliente diferente a un pedido utilizando la propiedad de navegación de Customer sobre el objeto Order para obtener acceso a la referencia del cliente asociado a ese pedido: order.Customer = customer.

En el siguiente ejemplo se agrega un pedido a un pedido de un cliente existente utilizando la propiedad de navegación Orders para obtener acceso a la colección de orders que pertenecen al customer:

customer.Orders.Add(order).

En una asociación de clave externa, puede formar o cambiar una relación estableciendo la propiedad de clave externa del objeto dependiente, como en el siguiente ejemplo:

order.CustomerID = CustomerID.

Para obtener más información sobre las asociaciones independientes y de clave externa, vea Definir y administrar relaciones (Entity Framework).

Puede utilizar propiedades de navegación para cargar objetos relacionados con una entidad mediante la asociación definida. Para obtener más información, vea Cargar objetos relacionados (Entity Framework) y Cómo navegar por las relaciones mediante propiedades de navegación (Entity Framework).

En el ejemplo siguiente de la sintaxis de consulta basada en métodos se usa el método SelectMany para obtener todos los pedidos de los contactos cuyo apellido es "Zhou". La propiedad de navegación de Contact.SalesOrderHeader se utiliza para obtener la colección de objetos SalesOrderHeader para cada contacto.

Dim lastName = "Zhou"
Using context As New AdventureWorksEntities
    Dim ordersQuery = context.Contacts _
    .Where(Function(c) c.LastName = lastName) _
    .SelectMany(Function(o) o.SalesOrderHeaders)

    For Each order In ordersQuery
        Console.WriteLine("Order ID: {0}, Order date: {1}, Total Due: {2}", _
                order.SalesOrderID, order.OrderDate, order.TotalDue)
    Next
End Using
string lastName = "Zhou";
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
    IQueryable<SalesOrderHeader> ordersQuery = context.Contacts
        .Where(c => c.LastName == lastName)
        .SelectMany(c => c.SalesOrderHeaders);

    foreach (var order in ordersQuery)
    {
        Console.WriteLine("Order ID: {0}, Order date: {1}, Total Due: {2}",
            order.SalesOrderID, order.OrderDate, order.TotalDue);
    }
}

Vea también

Conceptos

Definir y administrar relaciones (Entity Framework)