Propriétés de navigation

Les propriétés de navigation d'Entity Framework permettent de parcourir une association entre deux types d'entité. Une propriété de navigation est définie par unÉlément NavigationProperty (CSDL) du modèle conceptuel. Chaque objet peut avoir une propriété de navigation pour chaque relation à laquelle il participe. Les propriétés de navigation permettent de parcourir et de gérer les relations dans les deux directions, en retournant un objet EntityReference, dans le cas d'une multiplicité un ou zéro ou un, ou un objet EntityCollection, dans le cas d'une multiplicité plusieurs. Vous pouvez également opter pour une navigation unidirectionnelle. Auquel cas, vous pouvez supprimer la propriété de navigation. Pour plus d'informations, consultez How to: Edit and Delete Navigation Properties.

Lorsque vous utilisez les classes générées par Entity Framework , des propriétés de navigation sont créées pour les objets qui participent à une relation. Pour plus d'informations sur l'utilisation de propriétés de navigation dans les entités POCO, consultez Spécifications pour la création de proxys POCO (Entity Framework).

Modification des relations

Vous pouvez utiliser des propriétés de navigation pour modifier une relation. L'exemple suivant affecte un client différent à une commande (« order ») à l'aide de la propriété de navigation Customer sur l'objet Order pour accéder à la référence client associée à cette commande : order.Customer = customer.

L'exemple suivant ajoute une commande à une commande client existante à l'aide de la propriété de navigation Orders pour accéder à la collection orders qui appartient à customer :

customer.Orders.Add(order).

Dans une association de clé étrangère, vous pouvez former ou modifier une relation en définissant la propriété de clé étrangère de l'objet dépendant, comme dans l'exemple suivant :

order.CustomerID = CustomerID.

Pour plus d'informations sur les associations indépendantes et les associations de clé étrangère, consultez Définition et gestion des relations (Entity Framework).

Vous pouvez utiliser des propriétés de navigation pour charger des objets associés à une entité par l'association définie. Pour plus d'informations, consultez Chargement d'objets connexes (Entity Framework) et Procédure : explorer des relations à l'aide des propriétés de navigation (Entity Framework).

Exploration des relations

L'exemple suivant de syntaxe de requête fondée sur une méthode utilise la méthode SelectMany pour obtenir toutes les commandes des contacts dont le nom de famille est « Zhou ». La propriété de navigation Contact.SalesOrderHeader est utilisée pour obtenir la collection des objets SalesOrderHeader de chaque contact.

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);
    }
}

Voir aussi

Concepts

Définition et gestion des relations (Entity Framework)