ObjectContext.Detach(Object) Método

Definição

Remove o objeto de contexto de objeto.

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

Parâmetros

entity
Object

O objeto a ser desanexado. Somente o entity é removido; se houver objetos relacionados que estão sendo acompanhados pelo mesmo ObjectStateManager, eles não serão desanexados automaticamente.

Exceções

O entity é null.

O entity não está associado a este ObjectContext (por exemplo, foi criado recentemente e não foi associado a nenhum contexto, foi obtido por meio de algum outro contexto ou já foi desanexado).

Exemplos

// 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

Comentários

Remove o objeto do ObjectStateManager. Isso desabilita o controle de alterações e a resolução de identidade para esse objeto. Para obter mais informações, consulte Anexar e desanexar objetos.

Depois que o Detach método for chamado, o sistema não manterá mais referências que apontem para esse objeto e ele poderá ser coletado pelo coletor de lixo.

Observação

A coleta de lixo só poderá ocorrer se o código do usuário não tiver referências ao objeto desanexado.

As seguintes considerações se aplicam ao desanexar objetos:

  • Detach afeta apenas o objeto específico que é passado para o método. Se o objeto que está sendo desanexado tiver objetos relacionados no contexto do objeto, esses objetos não serão desanexados.

  • Desanexar objetos não afeta os dados na fonte de dados.

  • Diretivas de exclusão em cascata e restrições referenciais não são impostas durante uma operação de desanexação.

Para obter mais informações, consulte Anexar e desanexar objetos.

Aplica-se a

Confira também