개체 분리(Entity Framework)
Entity Framework에서는 장기 실행 개체 컨텍스트가 필요한 시나리오를 지원합니다. 예를 들어, 데이터 개체가 시각적 컨트롤에 바인딩되고 데이터가 컨트롤에 표시되는 동안 개체가 보관되어야 하는 Windows 응용 프로그램에서 이러한 시나리오를 찾을 수 있습니다. 쿼리가 개체 컨텍스트 내에서 실행될 때 반환되는 개체는 자동으로 컨텍스트에 연결됩니다. 다시 말해서, 동일한 개체 컨텍스트에서 실행되는 반복 쿼리는 개체 컨텍스트의 메모리 요구 사항을 높입니다. NoTracking의 값이 MergeOption인 상태에서 쿼리가 실행되는 경우는 예외입니다. 이 경우에는 개체가 개체 컨텍스트에 연결되지 않습니다.
개체 서비스에서는 개체를 개체 컨텍스트에서 분리할 수 있습니다. 더 이상 필요 없는 개체는 분리할 수 있습니다. 분리된 개체는 개체 컨텍스트에서 참조하지 않으며, 해당 개체의 리소스는 .NET Framework에서 회수할 수 있습니다.
개체를 분리하려면 다음 예제와 같이 Detach 메서드를 호출하고 분리할 개체에 대한 참조를 전달해야 합니다.
' Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First())
// Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First());
개체를 분리할 때는 다음 사항을 고려해야 합니다.
Detach는 메서드에 전달되는 특정 개체에만 적용됩니다. 분리할 개체의 관련 개체가 개체 컨텍스트에 있는 경우 해당 개체는 분리되지 않습니다.
분리된 개체에 대해서는 관계 정보가 유지되지 않습니다.
개체가 분리될 경우 개체 상태 정보가 유지되지 않습니다. 여기에는 추적된 변경 내용과 임시 키 값도 포함됩니다.
개체 분리는 데이터 원본의 데이터에 영향을 주지 않습니다.
하위 삭제 지시문 및 참조 제약 조건은 분리 작업 동안 적용되지 않습니다.
개체 분리 작업을 수행하는 데 필요한 추가 작업과 비교하여 개체 분리를 통해 얻을 수 있는 장점을 고려해야 합니다. 사용자 데이터의 범위가 변경된 경우(예: 다른 데이터 집합이 포함된 새 폼 표시) 단순히 기존 ObjectContext에서 개체를 분리하기 보다는 새 ObjectContext 인스턴스를 만드는 것을 고려해야 합니다.
자세한 내용은 방법: 개체 컨텍스트에서 개체 분리(Entity Framework)를 참조하십시오.