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.Loads related objects into the collection, using the specified merge option.

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

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.Specifies how the objects in this collection should be merged with the objects that might have been returned from previous queries against the same ObjectContext.

Exemples

Cet exemple est basé sur.This example is based on the . 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.To run the code in this example, you must have already added the AdventureWorks Sales Model to your project and configured your project to use the Entity Framework. Pour ce faire, effectuez les procédures décrites dans la rubrique Procédure : Configurez manuellement un projet Entity Framework et procédez comme suit : Définissez manuellement les fichiersde modèle et de mappage.To do this, complete the procedures in How to: Manually Configure an Entity Framework Project and How to: Manually Define the Model and Mapping Files.

Cet exemple charge les objets SalesOrderHeader connexes pour l'entité Contact.This example loads the related SalesOrderHeader objects for the Contact entity.

// 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()));
        }
    }
}
' Specify the customer ID. 
Dim contactID As Integer = 4332

Using context As New AdventureWorksEntities()
    context.ContextOptions.LazyLoadingEnabled = False

    ' Get a specified customer by contact ID. 
    Dim contact = (From c In context.Contacts
        Where c.ContactID = contactID
        Select c).First()

    ' Load the orders for the customer explicitly. 
    If Not contact.SalesOrderHeaders.IsLoaded Then
        contact.SalesOrderHeaders.Load()
    End If

    For Each order As SalesOrderHeader In contact.SalesOrderHeaders
        ' Load the items for the order if not already loaded. 
        If Not order.SalesOrderDetails.IsLoaded Then
            order.SalesOrderDetails.Load()
        End If

        Console.WriteLine(String.Format("PO Number: {0}", order.PurchaseOrderNumber))
        Console.WriteLine(String.Format("Order Date: {0}", order.OrderDate.ToString()))
        Console.WriteLine("Order items:")
        For Each item As SalesOrderDetail In order.SalesOrderDetails
            Console.WriteLine(String.Format("Product: {0} Quantity: {1}", _
                                              item.ProductID.ToString(), item.OrderQty.ToString()))
        Next
    Next
End Using

Remarques

Cette méthode appelle la méthode RelatedEnd.ValidateLoad interne avant de charger la collection, ce qui confirme qu’un appel Load à a les conditions appropriées.This method calls the internal RelatedEnd.ValidateLoad method before loading the collection, which validates that a call to Load has the correct conditions. La RelatedEnd.ValidateLoad méthode vérifie que :The RelatedEnd.ValidateLoad method checks that:

Lorsque des objets de la collection sont déjà chargés dans ObjectContextle, Load la méthode applique l' MergeOption objet spécifié par le mergeOption paramètre.When objects in the collection are already loaded into the ObjectContext, the Load method enforces the MergeOption specified by the mergeOption parameter. Pour plus d’informations, consultez résolution d’identité, gestion d’État et change Tracking.For more information, see Identity Resolution, State Management, and Change Tracking.

Pour charger explicitement des objets connexes, vous devez appeler Load la méthode sur la terminaison connexe retournée par la propriété de navigation.To explicitly load related objects, you must call the Load method on the related end returned by the navigation property. Pour une relation un-à-plusieurs, appelez la Load méthode sur EntityCollection<TEntity>.For a one-to-many relationship, call the Load method on EntityCollection<TEntity>. Pour une relation un-à-un, appelez la Load fonction EntityReference<TEntity>on.For a one-to-one relationship, call the Load on EntityReference<TEntity>. Cela charge les données d'objets connexes dans le contexte d'objet.This loads the related object data into the object context. Vous pouvez énumérer la collection de résultats retournés à foreach l’aideFor Each...Next d’une boucle (dans Visual Basic) et Load appeler de manière EntityCollection<TEntity> conditionnelle la méthode sur EntityReference<TEntity> les propriétés et pour chaque entité dans les résultats.You can enumerate through the collection of returned results using a foreach loop (For Each...Next in Visual Basic) and conditionally call the Load method on EntityReference<TEntity> and EntityCollection<TEntity> properties for each entity in the results.

La Load méthode charge les objets connexes à partir de la source de IsLoaded données true, qu’il s’agisse ou non de.The Load method loads related objects from the data source whether or not IsLoaded is true.

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.When you call the Load method during a foreach (C#) or For Each (Visual Basic) enumeration, Object Services tries to open a new data reader. 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.This operation will fail unless you have enabled multiple active results sets by specifying multipleactiveresultsets=true in the connection string. Vous pouvez également charger le résultat de la requête dans une collection List<T>.You can also load the result of the query into a List<T> collection. Cela ferme le lecteur de données et vous permet d'énumérer la collection pour charger des objets référencés.This closes the data reader and enables you to enumerate over the collection to load referenced objects.

La méthode EntityCollection<TEntity>.Load est synchronisée avec la méthode EntityReference<TEntity>.Load.The EntityCollection<TEntity>.Load method is synchronized with the EntityReference<TEntity>.Load method.

S’applique à