Compartilhar via


EntityCollection<TEntity>.Attach Método

Definição

Define uma relação entre dois objetos anexados a um contexto de objeto.

Sobrecargas

Attach(IEnumerable<TEntity>)

Define as relações entre um objeto e uma coleção de objetos relacionados em um contexto de objeto.

Attach(TEntity)

Define uma relação entre dois objetos anexados a um contexto de objeto.

Attach(IEnumerable<TEntity>)

Define as relações entre um objeto e uma coleção de objetos relacionados em um contexto de 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>

Coleção de objetos no contexto de objeto relacionados ao objeto de origem.

Exceções

A coleção entities é null.

O objeto de origem ou um objeto na coleção entities é null ou não está em um estado Unchanged ou Modified.

- ou -

A relação não pode ser definida com base nos metadados de EDM. Isso pode ocorrer quando a associação no esquema conceitual não dá suporte a uma relação entre os dois tipos.

Comentários

O Attach método é usado para definir relações entre um objeto e uma coleção de objetos relacionados quando o objeto de origem e a coleção de objetos relacionados já existem no contexto do objeto. Para anexar um objeto ou um grafo de objeto em que as relações já estão definidas, chame o Attach método no ObjectContext. Para criar um novo objeto relacionado ao objeto de origem, chame o Add método no EntityCollection<TEntity>. Para obter mais informações, consulte Anexar e desanexar objetos.

Se a coleção já estiver preenchida ou parcialmente preenchida, o Attach método mescla entidades existentes com as entidades fornecidas. As entidades fornecidas não são consideradas como o conjunto completo de entidades relacionadas.

Todas as entidades passadas devem estar no Unchanged estado ou Modified . Objetos no Deleted estado só são permitidos quando o gerenciador de estado já está acompanhando a instância de relação.

Aplica-se a

Attach(TEntity)

Define uma relação entre dois objetos anexados a um contexto de 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

O objeto que está sendo anexado.

Exceções

Quando o entity é null.

Quando o entity não pode ser relacionado ao objeto de origem. Isso pode ocorrer quando a associação no esquema conceitual não dá suporte a uma relação entre os dois tipos.

- ou -

Quando um objeto é null ou não está em um estado Unchanged ou Modified.

Exemplos

Este exemplo é baseado no Modelo de Vendas da Adventure Works. Para executar o código neste exemplo, você já deve ter adicionado o Modelo de Vendas adventureworks ao seu projeto e configurado seu projeto para usar o Entity Framework. Para fazer isso, conclua os procedimentos em Como configurar manualmente um projeto do Entity Framework e Como definir manualmente os arquivos de modelo e mapeamento.

Este exemplo anexa uma coleção de objetos desanexados SalesOrderDetail e um objeto desanexado SalesOrderHeader a um contexto de objeto e define as relações entre o SalesOrderHeader objeto e 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);
    }
}

Comentários

O Attach método é usado para definir relações entre dois objetos quando ambos os objetos já existem no contexto do objeto. Para anexar um objeto ou um grafo de objeto em que as relações já estão definidas, chame o Attach método no ObjectContext. Para criar um novo objeto relacionado ao objeto de origem, chame o Add método no EntityCollection<TEntity>. Para obter mais informações, consulte Anexar e desanexar objetos.

Se o EntityCollection<TEntity> já tiver carregado objetos, o Attach método mescla o objeto com os objetos existentes no EntityCollection<TEntity>.

O objeto anexado não é considerado o conjunto completo de objetos de entidade relacionados.

O objeto associado a esse EntityCollection<TEntity> e a todos os objetos que estão sendo anexados a ele deve estar em um Unchanged estado ou Modified .

Objetos no Deleted estado só podem ser anexados quando o ObjectStateManager já está rastreando a instância de relação.

Aplica-se a