EntityCollection<TEntity>.Load(MergeOption) Methode

Definition

Lädt verbundene Objekte mit der angegebenen Mergeoption in die Auflistung.

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 Objekten zusammengeführt werden sollen, die möglicherweise von vorherigen Abfragen für denselben ObjectContext zurückgegeben wurden.

Beispiele

Dieses Beispiel beruht auf dem AdventureWorks Sales-Modell. Zum Ausführen des Codes in diesem Beispiel müssen Sie dem Projekt bereits das AdventureWorks Sales-Modell hinzugefügt und das Projekt zur Verwendung des Entity Framework konfiguriert haben. Führen Sie hierzu die Verfahren unter Vorgehensweise: Manuelles Konfigurieren eines Entity Framework-Projekts und Vorgehensweise: Manuelles Definieren des Modells und der Zuordnungsdateien aus.

In diesem Beispiel werden die verbundenen SalesOrderHeader-Objekte für die Contact-Entität 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 vor dem Laden der Auflistung die interne RelatedEnd.ValidateLoad Methode auf, die überprüft, ob ein Aufruf von Load die richtigen Bedingungen aufweist. Die RelatedEnd.ValidateLoad -Methode überprüft Folgendes:

Wenn Objekte in der Auflistung bereits in geladen ObjectContextwurden, erzwingt die Load -Methode die MergeOption durch den mergeOption -Parameter angegebene. Weitere Informationen finden Sie unter Identitätsauflösung, Statusverwaltung und Änderungsnachverfolgung.

Um verknüpfte Objekte explizit zu laden, müssen Sie die Load -Methode auf dem verknüpften Ende aufrufen, das von der Navigationseigenschaft zurückgegeben wird. Rufen Sie für eine 1:n-Beziehung die Load -Methode für auf EntityCollection<TEntity>. Rufen Sie für eine 1:1-Beziehung auf LoadEntityReference<TEntity>. Dadurch werden die Daten der verbundenen Objekte in den Objektkontext geladen. Sie können die Auflistung der zurückgegebenen Ergebnisse mithilfe einer foreach Schleife (For Each...Next in Visual Basic) auflisten und die -Methode für EntityReference<TEntity> und EntityCollection<TEntity> die Load 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 ist oder nicht IsLoadedtrue.

Hinweis

Beim Aufruf der Load-Methode in einer foreach (C#)- oder For Each (Visual Basic)-Enumeration wird von Object Services ein neuer Datenleser geöffnet. Diese Operation schlägt fehl, es sei denn, es wurde "Multiple Active Result Sets" aktiviert, indem in der Verbindungszeichenfolge multipleactiveresultsets=true angegeben wurde. Das Ergebnis der Abfrage kann auch in eine List<T>-Auflistung geladen werden. Dadurch wird der Datenreader geschlossen, und die Auflistung kann durchlaufen werden, um Objekte, auf die verwiesen wird, zu laden.

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

Gilt für: