Share via


Procedura: caricare in modo esplicito entità POCO (Entity Framework)

Nell'esempio di questo argomento viene illustrato come caricare in modo esplicito oggetti correlati utilizzando il metodo LoadProperty su ObjectContext. Per un esempio di utilizzo di caricamento lazy per l'accesso agli oggetti correlati, vedere Procedura: utilizzare il caricamento lazy per caricare oggetti correlati (Entity Framework). Il metodo LoadProperty può essere utilizzato con entità POCO e con entità che derivano da EntityObject.

Negli esempi di questo argomento vengono utilizzate le classi di dati POCO definite in Procedura: definire entità POCO (Entity Framework), la classe AdventureWorksEntities (derivata dalla classe ObjectContext) creata in Procedura: definire un contesto dell'oggetto personalizzato (Entity Framework) e un modello di dati basato su AdventureWorks definito in Procedura: personalizzare i file di mapping e di modellazione per l'utilizzo con oggetti personalizzati (Entity Framework).

Esempio

In questo esempio vengono restituiti i primi cinque oggetti Order e viene chiamato il metodo LoadProperty per caricare in modo esplicito gli oggetti LineItem correlati per ogni Order.

Using context As New POCOAdventureWorksEntities()
    Try
        ' Disable lazy loading. 
        context.ContextOptions.LazyLoadingEnabled = False

        ' Get the first five orders. 
        For Each order As Order In context.Orders.Take(5)
            ' Because LazyLoadingEnabled is set to false, 
            ' we need to explicitly load the related line items for the order. 
            context.LoadProperty(order, "LineItems")

            Console.WriteLine(String.Format("PO Number: {0}", order.ExtendedInfo.PurchaseOrderNumber))
            Console.WriteLine(String.Format("Order Date: {0}", order.OrderDate.ToString()))
            Console.WriteLine("Order items:")
            For Each item As LineItem In order.LineItems
                Console.WriteLine(String.Format("Product: {0} " & "Quantity: {1}", item.ProductID, item.OrderQty))
            Next
        Next
    Catch ex As InvalidOperationException
        Console.WriteLine(ex.Message)
    Catch ex As Exception
        Console.WriteLine(ex.Message)
    End Try
End Using
using (POCOAdventureWorksEntities context =
        new POCOAdventureWorksEntities())
{
    try
    {
        // Disable lazy loading.
        context.ContextOptions.LazyLoadingEnabled = false;

        // Get the first five orders.
        foreach (Order order in context.Orders.Take(5))
        {
            // Because LazyLoadingEnabled is set to false,
            // we need to explicitly load the related line items for the order.
            context.LoadProperty(order, "LineItems");

            Console.WriteLine(String.Format("PO Number: {0}",
                order.ExtendedInfo.PurchaseOrderNumber));
            Console.WriteLine(String.Format("Order Date: {0}",
                order.OrderDate.ToString()));
            Console.WriteLine("Order items:");
            foreach (LineItem item in order.LineItems)
            {
                Console.WriteLine(String.Format("Product: {0} "
                    + "Quantity: {1}", item.ProductID,
                    item.OrderQty));
            }
        }
    }
    catch (InvalidOperationException ex)
    {
        Console.WriteLine(ex.Message);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

Vedere anche

Concetti

Caricamento di entità POCO correlate (Entity Framework)
Personalizzazione di oggetti (Entity Framework)
Utilizzo di entità POCO (Entity Framework)