Quelle: dotnetpro
Kaskadierendes Löschen in Entity Framework Core 17.06.2019, 00:00 Uhr

Löschzug

Entity Framework Core bietet für das kaskadierende Löschen abhängiger Objekte mehr Optionen als der Vorgänger ADO.NET Entity Framework
Wenn in einer Objektbeziehung vom Typ 1:1 oder 1:n ein Master-Datensatz gelöscht wird, dann meint der Ausdruck „kaskadierendes Löschen“ (Cascading Delete), dass nicht nur der Master-Datensatz, sondern auch die mit ihm verbundenen abhängigen Detaildaten gelöscht werden – und damit stellt sich auch die Frage, was dabei mit dem Detail­datensatz (im Fall 1:1) oder den Detaildatensätzen (im Fall 1:n) passiert. Es gibt in Entity Framework (EF) Core vier Modi für das kaskadierende Löschen:
  • Cascade: In diesem Modus löscht Entity Framework Core die verbundenen Detaildaten. Dieser Modus ist daher die Standardeinstellung für Pflichtbeziehungen.
  • ClientSetNull: Dieser Modus ist für optionale Beziehungen gedacht und seit Version 2.0 von Entity Framework Core auch die Voreinstellung für diese Art Beziehung. Zuvor war Restrict der Standard für optionale Beziehungen. Das Core-Framework setzt im Arbeitsspeicher und in der Datenbank den Fremdschlüssel auf NULL.
  • SetNull ist eine Variante des Modus ClientSetNull, der das Nullsetzen des Fremdschlüssels in der Datenbank dem Datenbanksystem überlässt.
  • Restrict bedeutet, dass Entity Framework Core sich aus dem Thema heraushält, also weder Löschbefehle sendet noch sonst etwas bei den verbundenen Datensätzen verändert.

Jetzt 1 Monat kostenlos testen!

Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde.
  • + Digitales Kundenkonto,
  • + Zugriff auf das digitale Heft,
  • + Zugang zum digitalen Heftarchiv,
  • + Auf Wunsch: Weekly Newsletter,
  • + Sämtliche Codebeispiele im digitalen Heftarchiv verfügbar