Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo EntityCollection<TEntity>.Load (MergeOption)

 

Data di pubblicazione: ottobre 2016

Carica gli oggetti correlati nella raccolta utilizzando l'opzione di unione specificata.

Spazio dei nomi:   System.Data.Objects.DataClasses
Assembly:  System.Data.Entity (in System.Data.Entity.dll)

public override void Load(
	MergeOption mergeOption
)

Parametri

mergeOption
Type: System.Data.Objects.MergeOption

Specifica il modo in cui gli oggetti della raccolta devono essere uniti con gli eventuali oggetti restituiti dalle query precedenti sullo stesso oggetto ObjectContext.

Questo metodo chiama il metodo M:System.Data.Objects.DataClasses.RelatedEnd.ValidateLoad``1(System.Data.Objects.MergeOption,System.String) prima di caricare la raccolta. Vedere questo metodo per un elenco di possibili eccezioni.

Quando gli oggetti nella raccolta sono già caricati nel ObjectContext, Load metodo impone il MergeOption specificato dal mergeOption parametro. Per ulteriori informazioni, vedere risoluzione di identità, gestione dello stato e rilevamento delle modifiche.

Per caricare in modo esplicito gli oggetti correlati, è necessario chiamare il Load metodo sull'entità finale correlata restituita dalla proprietà di navigazione. Per una relazione uno-a-molti, chiamare il Load metodo EntityCollection<TEntity>. Per una relazione uno a uno, chiamare il Load su EntityReference<TEntity>. In questo modo, i dati degli oggetti correlati verranno caricati nel contesto dell'oggetto. È possibile enumerare la raccolta di risultati restituiti utilizzando un foreach ciclo (For Each...Next in Visual Basic) e chiamare in modo condizionale il Load metodo EntityReference<TEntity> e EntityCollection<TEntity> le proprietà per ogni entità inclusa nei risultati.

Il Load metodo carica gli oggetti correlati dall'origine dati o meno IsLoaded è true.

System_CAPS_noteNota

Quando si chiama il metodo Load durante un'enumerazione foreach (C#) o For Each (Visual Basic), Object Services tenta di aprire un nuovo lettore dati. Questa operazione non verrà eseguita correttamente a meno che non sia stata abilitata la funzionalità MARS (Multiple Active Result Set) specificando multipleactiveresultsets=true nella stringa di connessione. È inoltre possibile caricare il risultato della query in una raccolta List<T>. In questo modo viene chiuso il lettore dati ed è possibile enumerare la raccolta per caricare gli oggetti a cui viene fatto riferimento.

Il metodo EntityCollection<TEntity>.Load viene sincronizzato con il metodo EntityReference<TEntity>.Load.

Questo esempio è basato il. Per eseguire il codice incluso in questo esempio, è necessario avere già aggiunto il modello Sales di Adventure Works al progetto e avere configurato il progetto per l'utilizzo di Entity Framework. A tale scopo, completare le procedure descritte in procedura: configurare manualmente un progetto Entity Framework e procedura: definire manualmente il file di modello e di Mapping.

In questo esempio vengono caricati gli oggetti SalesOrderHeader correlati per l'entità Contact.

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

.NET Framework
Disponibile da 3.5
Torna all'inizio
Mostra: