EntityCollection<TEntity>.Load(MergeOption) Metoda

Definicja

Ładuje powiązane obiekty do kolekcji przy użyciu określonej opcji scalania.

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

Określa sposób scalania obiektów w tej kolekcji z obiektami, które mogły zostać zwrócone z poprzednich zapytań względem tego samego ObjectContextobiektu .

Przykłady

Ten przykład jest oparty na modelu Adventure Works Sales Model. Aby uruchomić kod w tym przykładzie, musisz już dodać model AdventureWorks Sales Do projektu i skonfigurować projekt do korzystania z programu Entity Framework. Aby to zrobić, wykonaj procedury opisane w temacie Instrukcje: Ręczne konfigurowanie projektu platformy Entity Framework i Instrukcje: Ręczne definiowanie modelu i plików mapowania.

W tym przykładzie ładuje powiązane SalesOrderHeader obiekty dla Contact jednostki.

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

Uwagi

Ta metoda wywołuje metodę wewnętrzną RelatedEnd.ValidateLoad przed załadowaniem kolekcji, która sprawdza, czy wywołanie Load metody ma poprawne warunki. Metoda RelatedEnd.ValidateLoad sprawdza, czy:

Gdy obiekty w kolekcji są już ładowane do ObjectContextklasy , Load metoda wymusza MergeOption określony przez mergeOption parametr . Aby uzyskać więcej informacji, zobacz Identity Resolution, State Management i Change Tracking.

Aby jawnie załadować powiązane obiekty, należy wywołać metodę Load na powiązanym końcu zwróconym przez właściwość nawigacji. W przypadku relacji jeden do wielu wywołaj metodę Load w metodzie .EntityCollection<TEntity> W przypadku relacji jeden do jednego wywołaj metodę Load w dniu EntityReference<TEntity>. Spowoduje to załadowanie powiązanych danych obiektu do kontekstu obiektu. Możesz wyliczyć za pomocą kolekcji zwróconych wyników przy użyciu foreach pętli (For Each...Next w języku Visual Basic) i warunkowo wywołać Load metodę on EntityReference<TEntity> i EntityCollection<TEntity> właściwości dla każdej jednostki w wynikach.

Metoda Load ładuje powiązane obiekty ze źródła danych, niezależnie od tego, czy IsLoaded jest to true.

Uwaga

Podczas wywoływania Load metody podczas foreach wyliczania (C#) lub For Each (Visual Basic) usługi Object Services próbują otworzyć nowy czytnik danych. Ta operacja zakończy się niepowodzeniem, chyba że włączono wiele aktywnych zestawów wyników, określając multipleactiveresultsets=true w parametry połączenia. Możesz również załadować wynik zapytania do List<T> kolekcji. Spowoduje to zamknięcie czytnika danych i umożliwi wyliczanie kolekcji w celu załadowania obiektów, do których odwołuje się odwołanie.

Metoda EntityCollection<TEntity>.Load jest synchronizowana z EntityReference<TEntity>.Load metodą .

Dotyczy