Compartir a través de


EntityCollection<TEntity>.Attach Método

Definición

Define una relación entre dos objetos asociados del contexto del objeto.

Sobrecargas

Attach(IEnumerable<TEntity>)

Define las relaciones entre un objeto y una colección de objetos relacionados en un contexto del objeto.

Attach(TEntity)

Define una relación entre dos objetos asociados del contexto del objeto.

Attach(IEnumerable<TEntity>)

Define las relaciones entre un objeto y una colección de objetos relacionados en un contexto del objeto.

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

Parámetros

entities
IEnumerable<TEntity>

Colección de objetos del contexto del objeto que están relacionados con el objeto de origen.

Excepciones

La colección entities es null.

El objeto de origen o un objeto de la colección entities es null o no está en un estado Unchanged ni Modified.

o bien

La relación no se puede definir en función de los metadatos de EDM. Esto puede ocurrir cuando la asociación del esquema conceptual no admite una relación entre los dos tipos.

Comentarios

El método Attach se usa para definir las relaciones entre un objeto y una colección de objetos relacionados cuando tanto el objeto de origen como la colección de objetos relacionados ya existen en el contexto del objeto. Para asociar un objeto o un gráfico de objetos donde las relaciones ya están definidas, llame al método Attach del ObjectContext. Para crear un nuevo objeto relacionado con el objeto de origen, llame al método Add de la EntityCollection<TEntity>. Para más información, consulte Adjuntar y desasociar objetos.

Si la colección ya está rellena o parcialmente rellena, el método Attach combina las entidades existentes con las entidades especificadas. No se da por hecho que las entidades especificadas sean conjuntos completos de entidades relacionadas.

Todas las entidades pasadas deben estar en el estado Unchanged o Modified. Solo se permiten los objetos que están en el estado Deleted si el administrador de estados ya está realizando un seguimiento de la instancia de la relación.

Se aplica a

Attach(TEntity)

Define una relación entre dos objetos asociados del contexto del objeto.

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

Parámetros

entity
TEntity

Objeto que se va a asociar.

Excepciones

Cuando entity es null.

Cuando entity no se puede relacionar con el objeto de origen. Esto puede ocurrir cuando la asociación del esquema conceptual no admite una relación entre los dos tipos.

o bien

Cuando un objeto es null o no está en un estado Unchanged ni Modified.

Ejemplos

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

En este ejemplo se adjunta una colección de objetos desasociados SalesOrderDetail y un objeto desasociado SalesOrderHeader a un contexto de objeto y, a continuación, se definen las relaciones entre el SalesOrderHeader objeto y cada SalesOrderDetail objeto.

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

Comentarios

El método Attach se usa para definir las relaciones entre dos objetos cuando ambos ya existen en el contexto del objeto. Para asociar un objeto o un gráfico de objetos donde las relaciones ya están definidas, llame al método Attach del ObjectContext. Para crear un nuevo objeto relacionado con el objeto de origen, llame al método Add de la EntityCollection<TEntity>. Para más información, consulte Adjuntar y desasociar objetos.

Si EntityCollection<TEntity> ya ha cargado objetos, el método Attach combina el objeto con los objetos existentes en EntityCollection<TEntity>.

No se da por hecho que el objeto asociado sea el conjunto completo de objetos entidad relacionados.

Tanto el objeto asociado a esta EntityCollection<TEntity> como todos los objetos que se van a asociar a él deben estar en un estado Unchanged o Modified.

Los objetos en el estado Deleted solo pueden asociarse si el ObjectStateManager ya está realizando el seguimiento de la instancia de la relación.

Se aplica a