Cómo: Cargar explícitamente entidades POCO (Entity Framework)

Los ejemplos de este tema muestran cómo cargar explícitamente objetos relacionados utilizando el método LoadProperty sobre el ObjectContext. Si desea obtener un ejemplo de uso de carga diferida para obtener acceso a objetos relacionados, vea Cómo: Utilizar la carga diferida para cargar objetos relacionados (Entity Framework). El método LoadProperty se puede utilizar con entidades POCO y con entidades que se derivan de EntityObject.

Los ejemplos de este tema usan las clases de datos POCO que se definen en Cómo: Definir entidades POCO (Entity Framework), la clase AdventureWorksEntities (derivada de ObjectContext) que se crea en Cómo: Definir un contexto del objeto personalizado (Entity Framework), y un modelo de datos basado en AdventureWorks que se define en Cómo: Personalizar archivos de asignación y modelado para trabajar con objetos personalizados (Entity Framework).

Ejemplo

Este ejemplo devuelve los primeros cinco objetos Order y llama al método LoadProperty para cargar explícitamente los objetos LineItem relacionados para cada 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);
    }
}

Vea también

Conceptos

Cargar entidades POCO relacionadas (Entity Framework)
Personalizar objetos (Entity Framework)
Trabajar con entidades POCO (Entity Framework)