Freigeben über


Gewusst wie: Trennen von Objekten aus einem Objektkontext (Entity Framework)

Mit den Object Services können Objekte aus einem Objektkontext getrennt werden, wenn sie nicht länger benötigt werden. Rufen Sie hierfür die Detach-Methode auf. Dies reduziert die belegte Speichermenge.

Die Vorteile der Objekttrennung sollten gegen den zusätzlichen Verarbeitungsaufwand abgewogen werden. Weitere Informationen finden Sie unter Trennen von Objekten (Entity Framework).

Das Beispiel in diesem Thema beruht auf dem AdventureWorks Sales-Modell. Zum Ausführen des Codes in diesem Beispiel müssen Sie dem Projekt bereits das "AdventureWorks Sales"-Modell hinzugefügt haben und das Projekt zur Verwendung von Entity Framework konfiguriert haben. Führen Sie dazu die Verfahren in Gewusst wie: Manuelles Konfigurieren eines Entity Framework-Projekts und Gewusst wie: Manuelles Definieren eines Entity Data Model (Entity Framework) aus.

Beispiel

In diesem Beispiel wird veranschaulicht, wie Sie das SalesOrderDetail-Objekt und das SalesOrderHeader-Objekt von ObjectContext trennen können, wenn diese nicht mehr von der Anwendung benötigt werden.

' 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.SalesOrderDetail.Count > 0
            ' Detach the first SalesOrderDetail in the collection.
            context.Detach(order.SalesOrderDetail.First())
        End While

        ' Detach the order.
        context.Detach(order)

    Catch ex As InvalidOperationException
        Console.WriteLine(ex.ToString())
    End Try
End Sub
// 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.SalesOrderDetail.Count > 0)
        {
            // Detach the first SalesOrderDetail in the collection.
            context.Detach(order.SalesOrderDetail.First());
        }

        // Detach the order.
        context.Detach(order);
    }
    catch (InvalidOperationException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Siehe auch

Konzepte

Verwalten von Ressourcen in Object Services (Entity Framework)

Weitere Ressourcen

Verwalten des Objektkontexts (Entity Framework)
Arbeiten mit Objekten (Entity Framework-Aufgaben)