다음을 통해 공유


EntityCollection<TEntity>.Attach 메서드

정의

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

오버로드

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입니다.

소스 개체 또는 entities 컬렉션의 개체가 null이거나, Unchanged 또는 Modified 상태가 아닌 경우

또는

EDM 메타데이터를 기반으로 관계를 정의할 수 없는 경우. 개념 스키마의 연결이 두 형식 간의 관계를 지원하지 않을 때 발생할 수 있습니다.

설명

메서드는 Attach 소스 개체와 관련 개체의 컬렉션이 개체 컨텍스트에 이미 있는 경우 개체와 관련 개체의 컬렉션 간의 관계를 정의하는 데 사용됩니다. 관계가 이미 정의된 개체 또는 개체 그래프를 연결하려면 에서 메서드를 Attach 호출합니다 ObjectContext. 원본 개체와 관련된 새 개체를 만들려면 에서 메서드를 Add 호출합니다 EntityCollection<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이거나 Unchanged 또는 Modified 상태에 있지 않은 경우.

예제

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

다음은 분리된 개체의 컬렉션과 분리 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. 원본 개체와 관련된 새 개체를 만들려면 에서 메서드를 Add 호출합니다 EntityCollection<TEntity>. 자세한 내용은 개체 연결 및 분리를 참조하세요.

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

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

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

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

적용 대상