EntityCollection<TEntity>.Attach Metodo

Definizione

Definisce una relazione tra due oggetti connessi in un contesto dell'oggetto.

Overload

Attach(IEnumerable<TEntity>)

Definisce le relazioni tra un oggetto e una raccolta di oggetti correlati in un contesto dell'oggetto.

Attach(TEntity)

Definisce una relazione tra due oggetti connessi in un contesto dell'oggetto.

Attach(IEnumerable<TEntity>)

Definisce le relazioni tra un oggetto e una raccolta di oggetti correlati in un contesto dell'oggetto.

public:
 void Attach(System::Collections::Generic::IEnumerable<TEntity> ^ entities);
public void Attach (System.Collections.Generic.IEnumerable<TEntity> entities);
override this.Attach : seq<'Entity (requires 'Entity : null and 'Entity :> System.Data.Objects.DataClasses.IEntityWithRelationships)> -> unit
override this.Attach : seq<'Entity (requires 'Entity : null)> -> unit
Public Sub Attach (entities As IEnumerable(Of TEntity))

Parametri

entities
IEnumerable<TEntity>

Raccolta di oggetti nel contesto dell'oggetto correlati all'oggetto di origine.

Eccezioni

L'insieme entities è null.

L'oggetto di origine o un oggetto nell'insieme entities è null o non si trova nello stato Unchanged o Modified.

-oppure-

Non è possibile definire la relazione in base ai metadati EDM. Questa condizione può verificarsi quando l'associazione nello schema concettuale non supporta una relazione tra i due tipi.

Commenti

Il metodo Attach viene utilizzato per definire le relazioni tra un oggetto e una raccolta di oggetti correlati quando sia l'oggetto di origine che la raccolta di oggetti correlati sono già presenti nel contesto dell'oggetto. Per connettere un oggetto o un oggetto grafico in cui le relazioni sono già definite, chiamare il metodo Attach su ObjectContext. Per creare un nuovo oggetto correlato all'oggetto di origine, chiamare il metodo Add su EntityCollection<TEntity>. Per altre informazioni, vedere Collegamento e scollegamento di oggetti.

Se la raccolta è stata già riempita o parzialmente riempita, il metodo Attach unisce le entità esistenti con le entità specificate. Le entità specificate non vengono considerate come il set completo di entità correlate.

Tutte le entità passate devono trovarsi nello stato Unchanged o Modified. Gli oggetti nello stato Deleted sono consentiti solo quando è in corso la registrazione dell'istanza della relazione da parte del gestore degli stati.

Si applica a

Attach(TEntity)

Definisce una relazione tra due oggetti connessi in un contesto dell'oggetto.

public:
 void Attach(TEntity entity);
public void Attach (TEntity entity);
override this.Attach : 'Entity -> unit
Public Sub Attach (entity As TEntity)

Parametri

entity
TEntity

Oggetto da connettere.

Eccezioni

Quando l'oggetto entity è null.

Quando entity non può essere correlato all'oggetto di origine. Questa condizione può verificarsi quando l'associazione nello schema concettuale non supporta una relazione tra i due tipi.

-oppure-

Quando uno qualsiasi degli oggetti è null o non si trova nello stato Unchanged o Modified.

Esempio

Questo esempio è basato sul modello Sales di Adventure Works. 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 modello e i file di mapping.

In questo esempio viene associata una raccolta di oggetti scollegati SalesOrderDetail e un oggetto scollegato SalesOrderHeader a un contesto di oggetto e quindi vengono definite le relazioni tra l'oggetto SalesOrderHeader e ogni SalesOrderDetail oggetto.

private static void AttachRelatedObjects(
    ObjectContext currentContext,
    SalesOrderHeader detachedOrder,
    List<SalesOrderDetail> detachedItems)
{
    // Attach the root detachedOrder object to the supplied context.
    currentContext.Attach(detachedOrder);

    // Attach each detachedItem to the context, and define each relationship
    // by attaching the attached SalesOrderDetail object to the EntityCollection on
    // the SalesOrderDetail navigation property of the now attached detachedOrder.
    foreach (SalesOrderDetail item in detachedItems)
    {
        currentContext.Attach(item);
        detachedOrder.SalesOrderDetails.Attach(item);
    }
}

Commenti

Il metodo Attach viene utilizzato per definire le relazioni tra due oggetti quando entrambi gli oggetti sono già presenti nel contesto dell'oggetto. Per connettere un oggetto o un oggetto grafico in cui le relazioni sono già definite, chiamare il metodo Attach su ObjectContext. Per creare un nuovo oggetto correlato all'oggetto di origine, chiamare il metodo Add su EntityCollection<TEntity>. Per altre informazioni, vedere Collegamento e scollegamento di oggetti.

Se EntityCollection<TEntity> ha già caricato gli oggetti, il metodo Attach unisce insieme l'oggetto agli oggetti esistenti in EntityCollection<TEntity>.

L'oggetto connesso non viene considerato come set completo di oggetti entità correlati.

L'oggetto associato a EntityCollection<TEntity> e tutti gli oggetti ad esso connessi devono trovarsi nello stato Unchanged o Modified.

Gli oggetti nello stato Deleted possono essere connessi solo quando è in corso la registrazione dell'istanza della relazione da parte di ObjectStateManager.

Si applica a