ObjectContext.Detach(Object) 메서드

정의

개체 컨텍스트에서 개체를 제거합니다.Removes the object from the object context.

public:
 void Detach(System::Object ^ entity);
public void Detach (object entity);
member this.Detach : obj -> unit
Public Sub Detach (entity As Object)

매개 변수

entity
Object

분리할 개체입니다.Object to be detached. entity만 제거됩니다. 같은 ObjectStateManager에서 추적하는 관련 개체가 있는 경우 이러한 개체는 자동으로 분리되지 않습니다.Only the entity is removed; if there are any related objects that are being tracked by the same ObjectStateManager, those will not be detached automatically.

예외

entitynull인 경우The entity is null.

entity가 이 ObjectContext와 연결되어 있지 않은 경우(예: 새로 만들어진 후 컨텍스트에 아직 연결되지 않았거나, 다른 컨텍스트를 통해 가져왔거나, 이미 분리된 경우)The entity is not associated with this ObjectContext (for example, was newly created and not associated with any context yet, or was obtained through some other context, or was already detached).

예제

// This method is called to detach SalesOrderHeader objects and
// related SalesOrderDetail objects from the supplied object
// context when no longer needed by the application.
// Once detached, the resources can be garbage collected.
private static void DetachOrders(ObjectContext context,
    SalesOrderHeader order)
{
    try
    {
        // Detach each item from the collection.
        while (order.SalesOrderDetails.Count > 0)
        {
            // Detach the first SalesOrderDetail in the collection.
            context.Detach(order.SalesOrderDetails.First());
        }

        // Detach the order.
        context.Detach(order);
    }
    catch (InvalidOperationException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}
' This method is called to detach SalesOrderHeader objects and 
' related SalesOrderDetail objects from the supplied object 
' context when no longer needed by the application. 
' Once detached, the resources can be garbage collected. 
Private Shared Sub DetachOrders(ByVal context As ObjectContext, ByVal order As SalesOrderHeader)
    Try
        ' Detach each item from the collection. 
        While order.SalesOrderDetails.Count > 0
            ' Detach the first SalesOrderDetail in the collection. 
            context.Detach(order.SalesOrderDetails.First())
        End While

        ' Detach the order. 
        context.Detach(order)
    Catch ex As InvalidOperationException
        Console.WriteLine(ex.ToString())
    End Try
End Sub

설명

에서 개체를 제거 합니다 ObjectStateManager .Removes the object from the ObjectStateManager. 이렇게 하면 해당 개체에 대 한 변경 내용 추적 및 id 확인을 사용할 수 없습니다.This disables change tracking and identity resolution for that object. 자세한 내용은 개체 연결 및 분리를 참조 하세요.For more information, see Attaching and Detaching Objects.

Detach메서드가 호출 되 면 시스템은 더 이상이 개체를 가리키는 참조를 유지 하지 않으며 가비지 수집기에서 수집할 수 있습니다.After the Detach method is called, the system will no longer keep references that point to this object and it can be collected by the garbage collector.

참고

가비지 수집은 사용자 코드에 분리 된 개체에 대 한 참조가 없는 경우에만 발생할 수 있습니다.Garbage collection can only occur if the user code does not have any references to the detached object.

개체를 분리 하는 경우 다음 사항을 고려해 야 합니다.The following considerations apply when detaching objects:

  • Detach 는 메서드에 전달 되는 특정 개체에만 영향을 줍니다.Detach only affects the specific object that is passed to the method. 분리 되는 개체의 개체 컨텍스트에 관련 개체가 있으면 해당 개체는 분리 되지 않습니다.If the object being detached has related objects in the object context, those objects are not detached.

  • 개체를 분리 해도 데이터 원본의 데이터에는 영향을 주지 않습니다.Detaching objects does not affect data in the data source.

  • 하위 삭제 지시문 및 참조 제약 조건은 분리 작업을 수행 하는 동안에는 적용 되지 않습니다.Cascade delete directives and referential constraints are not enforced during a detach operation.

자세한 내용은 개체 연결 및 분리를 참조 하세요.For more information, see Attaching and Detaching Objects.

적용 대상

추가 정보