EntityCollection<TEntity>.Attach Método

Definição

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

Sobrecargas

Nome Description
Attach(IEnumerable<TEntity>)

Define 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 em um contexto de objeto.

Attach(IEnumerable<TEntity>)

Define 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 do objeto que estão relacionados ao objeto de origem.

Exceções

entities a coleção é null.

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

-ou-

A relação não pode ser definida com base nos metadados do 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 o conjunto completo de entidades relacionadas.

Todas as entidades passadas devem estar no estado ou Modified no Unchanged estado. 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 em 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 for entitynull.

Quando o objeto de origem entity não pode ser relacionado. 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 está null ou não está em um Unchanged estado ou Modified em um estado.

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 uma estrutura de entidade Project 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 os EntityCollection<TEntity> objetos já tiverem carregado, 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 isso EntityCollection<TEntity> e a todos os objetos que estão sendo anexados a ele deve estar em um Unchanged estado ou Modified estado.

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

Aplica-se a