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 소스 개체와 관련 개체의 컬렉션이 개체 컨텍스트에 이미 있는 경우 개체와 관련 개체의 컬렉션 간의 관계를 정의하는 데 사용됩니다. 관계가 이미 정의된 개체 또는 개체 그래프를 연결하려면 에서 메서드를 AttachObjectContext호출합니다. 소스 개체와 관련된 새 개체를 만들려면 에서 메서드를 Add 호출합니다 EntityCollection<TEntity>. 자세한 내용은 개체 연결 및 분리를 참조하세요.

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

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

적용 대상

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 두 개체가 개체 컨텍스트에 이미 있는 경우 두 개체 간의 관계를 정의하는 데 사용됩니다. 관계가 이미 정의된 개체 또는 개체 그래프를 연결하려면 에서 메서드를 AttachObjectContext호출합니다. 소스 개체와 관련된 새 개체를 만들려면 에서 메서드를 Add 호출합니다 EntityCollection<TEntity>. 자세한 내용은 개체 연결 및 분리를 참조하세요.

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

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

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

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

적용 대상