EntityCollection<TEntity>.Load(MergeOption) Méthode

Définition

Charge les objets connexes dans la collection, à l’aide de l’option de fusion spécifiée.

public:
 override void Load(System::Data::Objects::MergeOption mergeOption);
public override void Load (System.Data.Objects.MergeOption mergeOption);
override this.Load : System.Data.Objects.MergeOption -> unit
Public Overrides Sub Load (mergeOption As MergeOption)

Paramètres

mergeOption
MergeOption

Spécifie comment les objets de cette collection doivent être fusionnés avec les objets qui ont pu être retournés à partir de requêtes précédentes contre le même objet ObjectContext.

Exemples

Cet exemple est basé sur le modèle de vente Adventure Works Sales Model. Pour exécuter le code de cet exemple, vous devez déjà avoir ajouté le modèle de vente AdventureWorks Sales Model à votre projet et configuré ce dernier pour qu’il utilise Entity Framework. Pour ce faire, suivez les procédures décrites dans Guide pratique pour configurer manuellement un projet Entity Framework et Guide pratique pour définir manuellement le modèle et les fichiers de mappage.

Cet exemple charge les objets SalesOrderHeader connexes pour l'entité Contact.

// Specify the customer ID.
int contactID = 4332;

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    context.ContextOptions.LazyLoadingEnabled = false;

    // Get a specified customer by contact ID.
    var contact =
        (from c in context.Contacts
         where c.ContactID == contactID
         select c).First();

    // Load the orders for the customer explicitly.
    if (!contact.SalesOrderHeaders.IsLoaded)
    {
        contact.SalesOrderHeaders.Load();
    }

    foreach (SalesOrderHeader order in contact.SalesOrderHeaders)
    {
        // Load the items for the order if not already loaded.
        if (!order.SalesOrderDetails.IsLoaded)
        {
            order.SalesOrderDetails.Load();
        }

        Console.WriteLine(String.Format("PO Number: {0}",
            order.PurchaseOrderNumber));
        Console.WriteLine(String.Format("Order Date: {0}",
            order.OrderDate.ToString()));
        Console.WriteLine("Order items:");
        foreach (SalesOrderDetail item in order.SalesOrderDetails)
        {
            Console.WriteLine(String.Format("Product: {0} "
                + "Quantity: {1}", item.ProductID.ToString(),
                item.OrderQty.ToString()));
        }
    }
}

Remarques

Cette méthode appelle la méthode interne RelatedEnd.ValidateLoad avant de charger la collection, ce qui vérifie qu’un appel à Load a les conditions correctes. La RelatedEnd.ValidateLoad méthode vérifie que :

Lorsque les objets de la collection sont déjà chargés dans le ObjectContext, la Load méthode applique le MergeOption spécifié par le mergeOption paramètre . Pour plus d’informations, consultez Résolution de l’identité, gestion d’état et suivi des modifications.

Pour charger explicitement des objets connexes, vous devez appeler la Load méthode à l’extrémité associée retournée par la propriété de navigation. Pour une relation un-à-plusieurs, appelez la Load méthode sur EntityCollection<TEntity>. Pour une relation un-à-un, appelez le Load sur EntityReference<TEntity>. Cela charge les données d'objets connexes dans le contexte d'objet. Vous pouvez énumérer la collection de résultats retournés à l’aide d’une foreach boucle (For Each...Next en Visual Basic) et appeler de manière conditionnelle la Load méthode sur EntityReference<TEntity> les propriétés et EntityCollection<TEntity> pour chaque entité dans les résultats.

La Load méthode charge des objets associés à partir de la source de données, que soit ou non IsLoadedtrue.

Notes

Lorsque vous appelez la méthode Load lors d'une énumération foreach (C#) ou For Each (Visual Basic), Object Services essaie d'ouvrir un nouveau lecteur de données. Cette opération échoue sauf si vous avez activé des ensembles de résultats actifs multiples (MARS) en spécifiant multipleactiveresultsets=true dans la chaîne de connexion. Vous pouvez également charger le résultat de la requête dans une collection List<T>. Cela ferme le lecteur de données et vous permet d’énumérer la collection pour charger des objets référencés.

La méthode EntityCollection<TEntity>.Load est synchronisée avec la méthode EntityReference<TEntity>.Load.

S’applique à