EntityCollection<TEntity>.Load(MergeOption) Método

Definición

Carga objetos relacionados en la colección mediante la opción de combinación especificada.

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)

Parámetros

mergeOption
MergeOption

Especifica cómo se deben combinar los objetos de esta colección con los objetos que podrían haberse devuelto de las consultas anteriores en el mismo ObjectContext.

Ejemplos

Este ejemplo se basa en el modelo de ventas de Adventure Works. Para ejecutar el código en este ejemplo, debe haber agregado el modelo de ventas de AdventureWorks al proyecto y configurado el proyecto para usar Entity Framework. Para ello, complete los procedimientos de Cómo: Configurar manualmente una Project y Cómo: Definir manualmente los archivos de modelo y asignación.

En este ejemplo se cargan los objetos relacionados SalesOrderHeader para la Contact entidad.

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

Comentarios

Este método llama al método interno RelatedEnd.ValidateLoad antes de cargar la colección, que valida que una llamada a Load tiene las condiciones correctas. El RelatedEnd.ValidateLoad método comprueba que:

Cuando los objetos de la colección ya se cargan en ObjectContext, el Load método aplica el MergeOption especificado por el mergeOption parámetro . Para obtener más información, consulte Resolución de identidades, Administración de estado y Seguimiento de cambios.

Para cargar explícitamente objetos relacionados, debe llamar al Load método en el extremo relacionado devuelto por la propiedad de navegación. Para una relación uno a varios, llame al Load método en EntityCollection<TEntity>. Para una relación uno a uno, llame a Load en EntityReference<TEntity>. Esto carga los datos del objeto relacionados en el contexto del objeto. Puede enumerar a través de la colección de resultados devueltos mediante un bucle /> / en Visual Basic) y llamar condicionalmente al método en y para cada entidad de los resultados.

El Load método carga objetos relacionados desde el origen de datos si es IsLoadedo no true .

Note

Cuando se llama al Load método durante una foreach enumeración (C#) o For Each (Visual Basic), Object Services intenta abrir un nuevo lector de datos. Esta operación producirá un error a menos que haya habilitado varios conjuntos de resultados activos especificando multipleactiveresultsets=true en la cadena de conexión. También puede cargar el resultado de la consulta en una List<T> colección. Esto cierra el lector de datos y permite enumerar sobre la colección para cargar objetos a los que se hace referencia.

El EntityCollection<TEntity>.Load método se sincroniza con el EntityReference<TEntity>.Load método .

Se aplica a