Share via


Trennen von Objekten (Entity Framework)

Das Entity Framework unterstützt Szenarios, die einen Objektkontext mit langer Laufzeit erfordern. Dieses Szenario liegt beispielsweise in einer Windows-Anwendung vor, in der Datenobjekte an ein visuelles Steuerelement gebunden sind und Objekte persistent sein müssen, während die Daten im Steuerelement angezeigt werden. Beim Ausführen einer Abfrage innerhalb eines Objektkontexts werden die zurückgegebenen Objekte automatisch an den Objektkontext angefügt. Das bedeutet, dass durch die wiederholte Ausführung von Abfragen im selben Objektkontext die Speicheranforderungen des Objektkontexts erhöht werden. Eine Ausnahme bilden Abfragen, die mit dem MergeOption-Wert NoTracking ausgeführt werden. In diesem Fall werden Objekte nicht an den Objektkontext angefügt.

Mithilfe von Object Services können Objekte von einem Objektkontext getrennt werden. Wenn die Objekte nicht mehr erforderlich sind, können sie getrennt werden. Der Objektkontext verweist nicht auf getrennte Objekte, und ihre Ressourcen können vom .NET Framework wieder verwendet werden.

Um Objekte zu trennen, rufen Sie die Detach-Methode auf und übergeben einen Verweis auf das zu trennende Objekt wie im folgenden Beispiel:

' Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First())
// Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First());

Folgendes gilt beim Trennen von Objekten:

  • Detach betrifft nur das jeweilige Objekt, das an die Methode übergeben wird. Wenn das zu trennende Objekt über verbundene Objekte im Objektkontext verfügt, werden diese Objekte nicht getrennt.

  • Beziehungsinformationen für ein getrenntes Objekt bleiben nicht erhalten.

  • Objektzustandsinformationen bleiben nicht erhalten, wenn ein Objekt getrennt wird. Dies schließt nachverfolgte Änderungen und temporäre Schlüsselwerte ein.

  • Durch das Trennen von Objekten werden keine Daten in der Datenquelle beeinflusst.

  • Während eines Trennvorgangs werden keine Direktiven zur kaskadierten Löschung oder referenziellen Einschränkungen erzwungen.

  • Die Vorteile der Objekttrennung sollten gegen den zusätzlichen Verarbeitungsaufwand abgewogen werden. Wenn sich der Bereich der Benutzerdaten geändert hat, beispielsweise wenn ein neues Formular mit anderen Daten angezeigt wird, sollten Sie besser eine neue ObjectContext-Instanz erstellen, statt lediglich Objekte von einem vorhandenen ObjectContext zu trennen.

Weitere Informationen finden Sie unter Gewusst wie: Trennen von Objekten aus einem Objektkontext (Entity Framework).

Siehe auch

Konzepte

Anfügen von Objekten (Entity Framework)

Weitere Ressourcen

Verwalten des Objektkontexts (Entity Framework)