Freigeben über


EntityCollection<TEntity>.Load(MergeOption) Methode

Definition

Lädt verwandte Objekte in die Auflistung mit der angegebenen Zusammenführungsoption.

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)

Parameter

mergeOption
MergeOption

Gibt an, wie die Objekte in dieser Auflistung mit den Objekten zusammengeführt werden sollen, die möglicherweise aus vorherigen Abfragen mit demselben ObjectContextzurückgegeben wurden.

Beispiele

Dieses Beispiel basiert auf dem Adventure Works-Vertriebsmodell. Um den Code in diesem Beispiel auszuführen, müssen Sie ihrem Projekt bereits das AdventureWorks Sales Model hinzugefügt und ihr Projekt so konfiguriert haben, dass es das Entity Framework verwendet. Führen Sie dazu die Verfahren in How to: Manually Configure an Entity Framework Project and How to: Manually Define the Model and Mapping Files.

In diesem Beispiel werden die zugehörigen SalesOrderHeader Objekte für die entität Contact geladen.

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

Hinweise

Diese Methode ruft die interne RelatedEnd.ValidateLoad-Methode auf, bevor die Auflistung geladen wird, wodurch überprüft wird, ob ein Aufruf von Load die richtigen Bedingungen aufweist. Die RelatedEnd.ValidateLoad-Methode überprüft Folgendes:

Wenn Objekte in der Auflistung bereits in den ObjectContextgeladen werden, erzwingt die Load Methode die durch den parameter mergeOption angegebene MergeOption. Weitere Informationen finden Sie unter Identitätsauflösung, Zustandsverwaltung und Änderungsnachverfolgung.

Um verwandte Objekte explizit zu laden, müssen Sie die Load-Methode für das zugehörige Ende aufrufen, das von der Navigationseigenschaft zurückgegeben wird. Rufen Sie für eine 1:n-Beziehung die Load-Methode für EntityCollection<TEntity>auf. Rufen Sie für eine 1:1-Beziehung die Load für EntityReference<TEntity>auf. Dadurch werden die zugehörigen Objektdaten in den Objektkontext geladen. Sie können die Auflistung zurückgegebener Ergebnisse mithilfe einer foreach Schleife (For Each...Next in Visual Basic) durchlaufen und die Load-Methode für EntityReference<TEntity> und EntityCollection<TEntity> Eigenschaften für jede Entität in den Ergebnissen bedingt aufrufen.

Die Load Methode lädt verwandte Objekte aus der Datenquelle, unabhängig davon, ob IsLoadedtrueist.

Anmerkung

Wenn Sie die Load-Methode während einer foreach (C#) oder For Each (Visual Basic)-Aufzählung aufrufen, versucht Object Services, einen neuen Datenleser zu öffnen. Dieser Vorgang schlägt fehl, es sei denn, Sie haben mehrere aktive Resultsets aktiviert, indem Sie multipleactiveresultsets=true in der Verbindungszeichenfolge angeben. Sie können das Ergebnis der Abfrage auch in eine List<T>-Auflistung laden. Dadurch wird der Datenleser geschlossen, und Sie können die Auflistung aufzählen, um referenzierte Objekte zu laden.

Die EntityCollection<TEntity>.Load-Methode wird mit der EntityReference<TEntity>.Load-Methode synchronisiert.

Gilt für: