Udostępnij za pośrednictwem


ObjectContext.Detach(Object) Metoda

Definicja

Usuwa obiekt z kontekstu obiektu.

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

Parametry

entity
Object

Obiekt do odłączenia. Tylko obiekt entity jest usuwany. Jeśli istnieją powiązane obiekty, które są śledzone przez ten sam ObjectStateManagerelement , te nie zostaną automatycznie odłączone.

Wyjątki

Element entity to null.

Element entity nie jest skojarzony z tym ObjectContext elementem (na przykład został nowo utworzony i nie został jeszcze skojarzony z żadnym kontekstem lub został jeszcze uzyskany za pośrednictwem innego kontekstu lub został już odłączony).

Przykłady

// 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());
    }
}

Uwagi

Usuwa obiekt z obiektu ObjectStateManager. Spowoduje to wyłączenie śledzenia zmian i rozpoznawania tożsamości dla tego obiektu. Aby uzyskać więcej informacji, zobacz Dołączanie i odłączanie obiektów.

Po wywołaniu Detach metody system nie będzie już przechowywać odwołań wskazujących ten obiekt i może zostać zebrany przez moduł odśmieceń pamięci.

Uwaga

Odzyskiwanie pamięci może wystąpić tylko wtedy, gdy kod użytkownika nie ma żadnych odwołań do odłączonego obiektu.

Podczas odłączania obiektów należy wziąć pod uwagę następujące kwestie:

  • Detach dotyczy tylko określonego obiektu, który jest przekazywany do metody. Jeśli odłączony obiekt ma powiązane obiekty w kontekście obiektu, te obiekty nie są odłączane.

  • Odłączanie obiektów nie wpływa na dane w źródle danych.

  • Dyrektywy usuwania kaskadowego i ograniczenia odwołań nie są wymuszane podczas operacji odłączenia.

Aby uzyskać więcej informacji, zobacz Dołączanie i odłączanie obiektów.

Dotyczy

Zobacz też