EntityCollection<TEntity>.Attach 메서드

정의

개체 컨텍스트에서 연결된 두 개체 간의 관계를 정의합니다.

오버로드

Name Description
Attach(IEnumerable<TEntity>)

개체 컨텍스트에서 개체와 관련 개체 컬렉션 간의 관계를 정의합니다.

Attach(TEntity)

개체 컨텍스트에서 연결된 두 개체 간의 관계를 정의합니다.

Attach(IEnumerable<TEntity>)

개체 컨텍스트에서 개체와 관련 개체 컬렉션 간의 관계를 정의합니다.

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

매개 변수

entities
IEnumerable<TEntity>

원본 개체와 관련된 개체 컨텍스트의 개체 컬렉션입니다.

예외

entities 컬렉션은 .입니다 null.

컬렉션의 원본 개체 또는 개체가 entitiesnull 있거나 상태가 아닙니다 UnchangedModified .

-또는-

EDM 메타데이터에 따라 관계를 정의할 수 없습니다. 이 문제는 개념 스키마의 연결이 두 형식 간의 관계를 지원하지 않는 경우에 발생할 수 있습니다.

설명

Attach 메서드는 원본 개체와 관련 개체 컬렉션이 개체 컨텍스트에 이미 있는 경우 개체와 관련 개체 컬렉션 간의 관계를 정의하는 데 사용됩니다. 관계가 이미 정의된 개체 또는 개체 그래프를 연결하려면 해당 메서드를 Attach 호출합니다 ObjectContext. 원본 개체와 관련된 새 개체를 만들려면 .에서 메서드를 AddEntityCollection<TEntity>호출합니다. 자세한 내용은 개체 연결 및 분리를 참조하세요.

컬렉션이 이미 채워지거나 부분적으로 채워진 경우 메서드는 Attach 기존 엔터티를 지정된 엔터티와 병합합니다. 지정된 엔터티는 관련된 엔터티의 전체 집합으로 간주되지 않습니다.

전달된 모든 엔터티는 또는 Modified 상태여야 Unchanged 합니다. 상태의 Deleted 개체는 상태 관리자가 이미 관계 인스턴스를 추적 중인 경우에만 허용됩니다.

적용 대상

Attach(TEntity)

개체 컨텍스트에서 연결된 두 개체 간의 관계를 정의합니다.

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

매개 변수

entity
TEntity

연결 중인 개체입니다.

예외

이 경우 .entitynull

원본 개체와 entity 관련될 수 없는 경우 이 문제는 개념 스키마의 연결이 두 형식 간의 관계를 지원하지 않는 경우에 발생할 수 있습니다.

-또는-

개체가 null 있거나 상태가 아닌 UnchangedModified 경우

예제

이 예제는 Adventure Works Sales 모델을 기반으로 합니다. 이 예제에서 코드를 실행하려면 프로젝트에 AdventureWorks 판매 모델을 이미 추가하고 Entity Framework를 사용하도록 프로젝트를 구성해야 합니다. 이렇게 하려면 방법: Entity Framework Project 방법: 모델 및 매핑 파일 수동으로 정의 절차를 완료합니다.

다음은 분리된 개체 컬렉션과 분리 SalesOrderDetailSalesOrderHeader 된 개체를 개체 컨텍스트에 연결한 다음 개체와 각 SalesOrderDetail 개체 간의 SalesOrderHeader 관계를 정의하는 예제입니다.

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

설명

Attach 메서드는 두 개체가 개체 컨텍스트에 이미 있을 때 두 개체 간의 관계를 정의하는 데 사용됩니다. 관계가 이미 정의된 개체 또는 개체 그래프를 연결하려면 해당 메서드를 Attach 호출합니다 ObjectContext. 원본 개체와 관련된 새 개체를 만들려면 .에서 메서드를 AddEntityCollection<TEntity>호출합니다. 자세한 내용은 개체 연결 및 분리를 참조하세요.

EntityCollection<TEntity> 이미 로드된 개체가 있는 경우 메서드는 Attach 개체를 기존 개체EntityCollection<TEntity>와 병합합니다.

연결된 개체는 관련된 엔터티 개체의 전체 집합으로 간주되지 않습니다.

EntityCollection<TEntity> 개체와 연결된 개체 및 연결된 모든 개체는 상태 또는 Unchanged 상태여야 Modified 합니다.

상태의 개체는 Deleted 관계 인스턴스를 이미 추적 중인 ObjectStateManager 경우에만 연결할 수 있습니다.

적용 대상