Sdílet prostřednictvím


EntityCollection<TEntity>.Load(MergeOption) Metoda

Definice

Načte související objekty do kolekce pomocí zadané možnosti sloučení.

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)

Parametry

mergeOption
MergeOption

Určuje, jak mají být objekty v této kolekci sloučeny s objekty, které mohly být vráceny z předchozích dotazů proti stejnému ObjectContextobjektu .

Příklady

Tento příklad je založen na prodejním modelu Adventure Works. Chcete-li spustit kód v tomto příkladu, musíte již přidat AdventureWorks Sales Model do projektu a nakonfigurovat projekt tak, aby používal Entity Framework. Provedete to tak, že dokončíte postupy v části Postupy: Ruční konfigurace projektu Entity Framework a Postupy: Ruční definování souborů modelu a mapování.

Tento příklad načte související SalesOrderHeader objekty pro entitu 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()));
        }
    }
}

Poznámky

Tato metoda volá interní RelatedEnd.ValidateLoad metodu před načtením kolekce, která ověří, že volání má Load správné podmínky. Metoda RelatedEnd.ValidateLoad zkontroluje, že:

Pokud jsou objekty v kolekci již načteny do objektu ObjectContextLoad , metoda vynucuje MergeOption hodnotu určenou parametrem mergeOption . Další informace najdete v tématech Řešení identit, Správa stavu a Sledování změn.

Chcete-li explicitně načíst související objekty, musíte volat metodu Load na souvisejícím konci vrácenou navigační vlastností. Pro relaci 1:N zavolejte metodu na LoadEntityCollection<TEntity>. Pro relaci 1:1 zavolejte Load na EntityReference<TEntity>. Tím se data souvisejícího objektu načte do kontextu objektu. Můžete vytvořit výčet prostřednictvím kolekce vrácených výsledků pomocí foreach smyčky (For Each...Next v jazyce Visual Basic) a podmíněně volat metodu LoadEntityReference<TEntity> a EntityCollection<TEntity> vlastnosti pro každou entitu ve výsledcích.

Metoda Load načte související objekty ze zdroje dat bez ohledu na to, zda je truenebo není IsLoaded .

Poznámka

Když voláte metodu Load během výčtu foreach (C#) nebo For Each (Visual Basic), Object Services se pokusí otevřít novou čtečku dat. Tato operace selže, pokud jste nepovolili více aktivních sad výsledků zadáním multipleactiveresultsets=true v připojovacím řetězci. Výsledek dotazu můžete také načíst do List<T> kolekce. Tím zavřete čtečku dat a umožníte vytvořit výčet nad kolekcí a načíst odkazované objekty.

Metoda EntityCollection<TEntity>.Load je synchronizována s metodou EntityReference<TEntity>.Load .

Platí pro