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

Definição

Carrega objetos relacionados na coleção, usando a opção de fusão 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 como os objetos desta coleção devem ser fundidos com os objetos que possam ter sido devolvidos de consultas anteriores contra o mesmo ObjectContext.

Exemplos

Este exemplo baseia-se no Modelo de Vendas da Adventure Works. Para executar o código neste exemplo, deve já ter adicionado o AdventureWorks Sales Model ao seu projeto e configurado o seu projeto para usar o Entity Framework. Para isso, complete os procedimentos em Como: Configurar manualmente um Entity Framework Project e Como: Definir manualmente o modelo e os ficheiros de mapeamento.

Este exemplo carrega os objetos relacionados SalesOrderHeader para a Contact entidade.

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

Observações

Este método chama o método interno RelatedEnd.ValidateLoad antes de carregar a coleção, o que valida que uma chamada para Load tem as condições corretas. O RelatedEnd.ValidateLoad método verifica que:

Quando os objetos na coleção já estão carregados no ObjectContext, o Load método aplica o MergeOption especificado pelo mergeOption parâmetro. Para obter mais informações, consulte Resolução de identidade, Gerenciamento de estado e Controle de alterações.

Para carregar explicitamente objetos relacionados, deve chamar o Load método na extremidade relacionada devolvido pela propriedade de navegação. Para uma relação um-para-muitos, chame o Load método em EntityCollection<TEntity>. Para uma relação individual, ligue o LoadEntityReference<TEntity>. Isto carrega os dados relacionados do objeto no contexto do objeto. Pode enumerar através da coleção de resultados devolvidos usando um ciclo foreach (For Each...Next em Visual Basic) e chamar condicionalmente o método Load em EntityReference<TEntity> e EntityCollection<TEntity> propriedades para cada entidade nos resultados.

O Load método carrega objetos relacionados a partir da fonte de dados, seja ou trueIsLoaded não .

Note

Quando chama o método Load durante uma enumeração foreach (C#) ou For Each (Visual Basic), o Object Services tenta abrir um novo leitor de dados. Esta operação falhará a menos que tenha ativado vários conjuntos de resultados ativos especificando multipleactiveresultsets=true no cadeia de ligação. Também pode carregar o resultado da consulta numa List<T> coleção. Isto fecha o leitor de dados e permite-lhe enumerar sobre a coleção para carregar objetos referenciados.

O EntityCollection<TEntity>.Load método está sincronizado com o EntityReference<TEntity>.Load método.

Aplica-se a