Gewusst wie: Trennen von Objekten aus einem Objektkontext (Entity Framework)
Sie können Objekte aus einem Objektkontext trennen, 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 Anfügen und 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 der Modell- und Zuordnungsdateien (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.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
// 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());
}
}
Siehe auch
Konzepte
Verwalten von Verbindungen und Transaktionen (Entity Framework)
Arbeiten mit Objekten (Entity Framework)