EntityCollection<TEntity>.Attach Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Define uma relação entre dois objetos anexados no contexto de um objeto.
Sobrecargas
| Name | Description |
|---|---|
| Attach(IEnumerable<TEntity>) |
Define relações entre um objeto e uma coleção de objetos relacionados num contexto de objeto. |
| Attach(TEntity) |
Define uma relação entre dois objetos anexados no contexto de um objeto. |
Attach(IEnumerable<TEntity>)
Define relações entre um objeto e uma coleção de objetos relacionados num 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 com o 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á num Unchanged estado ou Modified .
-ou-
A relação não pode ser definida com base nos metadados da EDM. Isto pode ocorrer quando a associação no esquema conceptual não suporta uma relação entre os dois tipos.
Observações
O Attach método é usado para definir relações entre um objeto e uma coleção de objetos relacionados quando tanto o objeto de origem como a coleção de objetos relacionados já existem no contexto do objeto. Para anexar um objeto ou um grafo de objetos onde as relações já estão definidas, chama-se o Attach método no ObjectContext. Para criar um novo objeto relacionado com o objeto de origem, chame o Add método no EntityCollection<TEntity>. Para obter mais informações, consulte Anexando e desanexando objetos.
Se a coleção já estiver preenchida ou parcialmente preenchida, o Attach método funde as entidades existentes com as entidades dadas. As entidades dadas não são assumidas como o conjunto completo de entidades relacionadas.
Todas as entidades que passaram devem estar no Unchanged estado de outras Modified . Os objetos no Deleted estado só são permitidos quando o gestor de estados já está a acompanhar a instância de relação.
Aplica-se a
Attach(TEntity)
Define uma relação entre dois objetos anexados no contexto de um 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 a ser preso.
Exceções
Quando o entity é null.
Quando o entity não pode estar relacionado com o objeto de origem. Isto pode ocorrer quando a associação no esquema conceptual não suporta uma relação entre os dois tipos.
-ou-
Quando qualquer um dos objetos está null ou não está num Unchanged estado ou Modified .
Exemplos
Este exemplo baseia-se no Modelo de Vendas da Adventure Works. Para executar o código neste exemplo, deve já ter adicionado o AdventureWorks Sales Model ao seu projeto e configurado o seu projeto para usar o Entity Framework. Para isso, complete os procedimentos em Como: Configurar manualmente um Entity Framework Project e Como: Definir manualmente o modelo e os ficheiros de mapeamento.
Este exemplo associa uma coleção de objetos destacados SalesOrderDetail e um objeto destacado SalesOrderHeader a um contexto de objeto, e depois 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);
}
}
Observações
O Attach método é usado para definir relações entre dois objetos quando ambos já existem no contexto do objeto. Para anexar um objeto ou um grafo de objetos onde as relações já estão definidas, chama-se o Attach método no ObjectContext. Para criar um novo objeto relacionado com o objeto de origem, chame o Add método no EntityCollection<TEntity>. Para obter mais informações, consulte Anexando e desanexando objetos.
Se o EntityCollection<TEntity> já tiver objetos carregados, o Attach método funde o objeto com os objetos existentes no EntityCollection<TEntity>.
O objeto associado não é assumido como o conjunto completo dos objetos entidade relacionados.
O objeto associado a isto EntityCollection<TEntity> e todos os objetos a ela ligados devem estar num Unchanged estado ou.Modified
Os objetos no Deleted estado só podem ser anexados quando já ObjectStateManager está a rastrear a instância de relação.