EntityCollection<TEntity>.Attach Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.