Partage via


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

Définition

Charge les objets associés 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 peut-être été retournés par les requêtes précédentes sur les mêmes ObjectContext.

Exemples

Cet exemple est basé sur le modèle de vente Adventure Works. Pour exécuter le code dans cet exemple, vous devez avoir déjà ajouté le modèle de vente AdventureWorks à votre projet et configuré votre projet pour utiliser 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 les fichiers de modèle et de mappage.

Cet exemple charge les objets SalesOrderHeader associés 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 de RelatedEnd.ValidateLoad interne avant de charger la collection, ce qui valide qu’un appel à Load a les conditions appropriées. La méthode RelatedEnd.ValidateLoad vérifie que :

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

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

La méthode Load charge des objets connexes à partir de la source de données, que IsLoaded soit true.

Note

Lorsque vous appelez la méthode Load pendant une énumération foreach (C#) ou For Each (Visual Basic), Object Services tente d’ouvrir un nouveau lecteur de données. Cette opération échoue, sauf si vous avez activé plusieurs jeux de résultats actifs 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 sur 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 à