개체 연결(Entity Framework)

쿼리가 Entity Framework의 개체 컨텍스트 내에서 실행될 때 반환되는 개체는 자동으로 개체 컨텍스트에 연결됩니다. 쿼리가 아닌 다른 소스에서 가져온 개체 컨텍스트에 개체를 연결할 수도 있습니다. 또한 이전에 분리된 개체, NoTracking 쿼리에서 반환된 개체 또는 개체 컨텍스트 외부에서 가져온 개체를 연결하거나, ASP.NET 응용 프로그램의 보기 상태에서 저장되었거나 원격 메서드 호출 또는 웹 서비스에서 반환된 개체를 연결할 수도 있습니다.

다음 메서드 중 하나를 사용하여 개체를 개체 컨텍스트에 연결합니다.

  • ObjectContext에서 AddObject를 호출하여 개체를 개체 컨텍스트에 연결합니다. 개체가 데이터 소스에 아직 존재하지 않는 새 개체일 경우 이 메서드를 호출하십시오.

  • ObjectContext에서 Attach를 호출하여 개체를 개체 컨텍스트에 연결합니다. 개체가 이미 데이터 소스에 있지만 현재 컨텍스트에 연결되지 않은 경우 이 메서드를 호출하십시오. 자세한 내용은 방법: 관련 개체 연결(Entity Framework)을 참조하십시오.

  • ObjectContext에서 AttachTo를 호출하여 개체 컨텍스트에서 개체를 특정 엔터티 집합에 연결합니다. 개체에 null(Visual Basic에서는 Nothing) EntityKey 값이 있는 경우에도 이 작업을 수행합니다.

  • ObjectContext에서 ApplyPropertyChanges를 호출합니다. 개체가 이미 데이터 소스에 있고 분리된 개체에서 유지하려는 속성이 업데이트된 경우 이 메서드를 호출하십시오. 개체를 연결하기만 하면 속성 변경 내용은 손실됩니다. 자세한 내용은 방법: 분리된 개체에 대한 변경 내용 적용(Entity Framework)을 참조하십시오.

개체를 개체 컨텍스트에 연결할 때 다음 사항을 고려해야 합니다.

  • 연결되는 개체에 관련된 개체가 있는 경우 이러한 개체 또한 개체 컨텍스트에 연결됩니다.

  • Attach를 사용하여 개체를 연결하려면 개체가 IEntityWithKey를 구현해야 하며 개체에 유효한 키가 있어야 합니다.

  • 개체는 Unchanged 상태에서 개체 컨텍스트에 연결됩니다.

  • 연결된 개체가 데이터 소스에 없는 경우 SaveChanges 동안 추가되지 않습니다. 이 경우, 속성이 변경되면 SaveChanges 동안 서버에서 예외가 발생합니다. 개체를 추가하려면 Attach 대신 AddObject를 사용하십시오.

  • 연결되는 개체가 다른 개체에 관련되는 경우 다음 방법 중 하나로 관계를 명시적으로 정의해야 합니다.

    • 개체를 모두 개체 컨텍스트에 연결한 다음 EntityCollection 또는 EntityReferenceAttach를 호출하여 관계를 정의합니다.

    • 개체가 연결되지 않은 경우, EntityCollectionAdd를 호출하고 관련 개체를 지정하거나 EntityReferenceValue 속성을 관련 개체로 설정합니다. 그 다음, 개체 그래프의 루트를 개체 컨텍스트에 연결합니다. 이 메서드를 사용하여 분리 개체에서 개체 그래프를 생성한 다음 그래프를 개체 컨텍스트에 연결할 수 있습니다.

    XML serialization을 사용하여 serialize된 관련 개체를 연결할 때 이러한 메서드가 사용됩니다. 자세한 내용은 방법: 관련 개체 연결(Entity Framework)을 참조하십시오.

  • 연결되는 개체에 업데이트된 속성 값이 있는 경우 ApplyPropertyChanges를 사용하여 기존 개체에 업데이트를 적용합니다. 자세한 내용은 방법: 분리된 개체에 대한 변경 내용 적용(Entity Framework)을 참조하십시오.

  • Attach 메서드에 전달되는 개체에는 올바른 EntityKey 값이 있어야 합니다. 개체에 올바른 EntityKey 값이 없으면 AttachTo 메서드를 사용하여 엔터티 집합의 이름을 지정합니다.

  • 연결되는 개체에 개체 컨텍스트의 다른 개체로 이미 존재하는 동일한 EntityKey가 있는 경우 InvalidOperationException이 발생합니다. 동일한 개체 인스턴스가 개체 컨텍스트에 이미 있는 경우에는 이 오류가 발생하지 않습니다. 개체가 Unchanged 상태이기만 하면 동일한 개체 인스턴스에서 Attach를 여러 번 호출할 수 있습니다.

  • AttachTo 메서드를 사용하여 특정 엔터티 집합에 개체를 연결합니다. 자세한 내용은 개체 추가, 수정 및 삭제(Entity Framework)를 참조하십시오.

  • AttachTo 메서드를 사용하여 연결되는 개체에 해당 엔터티 키가 이미 정의되어 있는 경우 entitySetName 매개 변수 값이 기존 키의 엔터티 집합 이름과 일치하지 않으면 InvalidOperationException이 발생합니다.

참고 항목

개념

개체 분리(Entity Framework)
웹 서비스 및 엔터티 데이터 모델(응용 프로그램 시나리오)

기타 리소스

개체 컨텍스트 관리(Entity Framework)