EntityCollection<TEntity>.Attach Méthode

Définition

Définit une relation entre deux objets attachés dans un contexte d'objet.

Surcharges

Attach(IEnumerable<TEntity>)

Définit les relations entre un objet et une collection d'objets connexes dans un contexte d'objet.

Attach(TEntity)

Définit une relation entre deux objets attachés dans un contexte d'objet.

Attach(IEnumerable<TEntity>)

Définit les relations entre un objet et une collection d'objets connexes dans un contexte d'objet.

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))

Paramètres

entities
IEnumerable<TEntity>

Collection d'objets dans le contexte de l'objet qui sont associés à l'objet source.

Exceptions

La collection entities est null.

L'objet source ou un objet de la collection entities a la valeur null, ou n'est pas dans l'état Unchanged ou Modified.

- ou -

La relation ne peut pas être définie en fonction des métadonnées EDM. Cela peut se produire lorsque l'association dans le schéma conceptuel ne prend pas en charge une relation entre les deux types.

Remarques

La méthode Attach est utilisée pour définir les relations entre un objet et une collection d'objets connexes lorsque l'objet source et la collection d'objets connexes existent déjà dans le contexte de l'objet. Pour attacher un objet ou un graphique d'objet lorsque les relations sont déjà définies, appelez la méthode Attach sur l'objet ObjectContext. Pour créer un nouvel objet associé à l'objet source, appelez la méthode Add sur l'objet EntityCollection<TEntity>. Pour plus d’informations, consultez Attachement et détachement d’objets.

Si la collection est déjà remplie ou partiellement remplie, la méthode Attach fusionne les entités existantes avec les entités données. Il n'est pas supposé que les entités données sont le jeu complet d'entités associées.

Toutes les entités passées doivent être à l'état Unchanged ou Modified. Les objets à l'état Deleted sont autorisés uniquement lorsque le gestionnaire d'état effectue déjà le suivi de l'instance de relation.

S’applique à

Attach(TEntity)

Définit une relation entre deux objets attachés dans un contexte d'objet.

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

Paramètres

entity
TEntity

Objet qui est attaché.

Exceptions

Lorsque le paramètre entity est null.

Lorsque le paramètre entity ne peut pas être mis en rapport avec l'objet source. Cela peut se produire lorsque l'association dans le schéma conceptuel ne prend pas en charge une relation entre les deux types.

- ou -

Lorsque l'un ou l'autre des objets a la valeur null ou n'est pas dans l'état Unchanged ou Modified.

Exemples

Cet exemple est basé sur le modèle de vente Adventure Works Sales Model. Pour exécuter le code de cet exemple, vous devez déjà avoir ajouté le modèle de vente AdventureWorks Sales Model à votre projet et configuré ce dernier pour qu’il utilise Entity Framework. Pour ce faire, suivez les procédures décrites dans Guide pratique pour configurer manuellement un projet Entity Framework et Guide pratique pour définir manuellement les fichiers de modèle et de mappage.

Cet exemple montre comment attacher une collection d’objets détachés SalesOrderDetail et un objet détaché SalesOrderHeader à un contexte d’objet, puis définir les relations entre l’objet SalesOrderHeader et chaque SalesOrderDetail objet.

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

Remarques

La méthode Attach est utilisée pour définir les relations entre deux objets lorsque les deux objets existent déjà dans le contexte de l'objet. Pour attacher un objet ou un graphique d'objet lorsque les relations sont déjà définies, appelez la méthode Attach sur l'objet ObjectContext. Pour créer un nouvel objet associé à l'objet source, appelez la méthode Add sur l'objet EntityCollection<TEntity>. Pour plus d’informations, consultez Attachement et détachement d’objets.

Si l’objet EntityCollection<TEntity> contient déjà des objets chargés, la méthode Attach fusionne l’objet avec les objets existants dans l’objet EntityCollection<TEntity>.

Il n'est pas supposé que l'objet attaché est le jeu complet d'objets entité associés.

L'objet associé à cet objet EntityCollection<TEntity> et tous les objets qui y sont attachés doivent être à l'état Unchanged ou Modified.

Les objets à l'état Deleted peuvent être attachés uniquement lorsque l'objet ObjectStateManager effectue déjà le suivi de l'instance de relation.

S’applique à