2015-03-25 6 views
36

Ich bin ein wenig verschwommen über die Löschregeln für Core Data Relationships. Also wenn mir jemand helfen könnte ein paar Fragen zu beantworten.Grundlegende Daten zum Löschen von Regeln in One to Many verstehen

Ich habe Entitäten A und B. A hat eine n-Beziehung mit B und B hat eine zu-Eins-Beziehung mit A.

A < --- >> B

Jetzt, Wenn ich die Löschregel auf "A" auf "Cascade" setze, werden alle damit verbundenen Bs gelöscht. Aber wenn ich es auf Null setzen, wird es die Bs auf NIL oder nur den Fremdschlüssel auf Null setzen?

Und ich habe überall nach der Beziehung von B nach A gesucht, sollte ich es auf Nullify setzen? Wird das "B-Objekt" nur bei A "Nullate"? Oder wird es alle mit A assoziierten B nichtig machen? Was ist mit Cascade? Wird es alle mit A assoziierten B oder nur das bestimmte B löschen?

Oder verwende ich einfach "No Action" auf die Beziehung von B zu A, so dass, wenn ich B löschen, keine Änderung zu A passieren wird, aber die Referenz zu B wird nicht existieren?

Ich bin ziemlich verwirrt mit diesen, so entschuldigen Sie meine Fragen.

Danke.

+2

question..upvoted Sehr schönes – NSPratik

Antwort

55

Wenn Sie die Löschregel auf "nullify" setzen und das A-Objekt löschen, werden die Verweise auf dieses Objekt in den Bs entfernt. Die Umkehrung funktioniert auf die gleiche Weise. Wenn Sie Kaskade haben und B löschen, wird das A, auf das B zeigte, entfernt. Es folgt dann der Löschregel von A zu den verbleibenden Bs (entweder Kaskade oder Null).

Die Regeln, die Sie festlegen, hängen wirklich von Ihrem Datenmodell ab. Wenn A ein Kunde und B deren Bestellungen wären, könnten Sie die A-> B-Regel auf Ablehnung setzen (verhindern, dass A gelöscht wird, wenn der Kunde Bestellungen hat) oder kaskadieren (die Bestellungen löschen, wenn der Kunde gelöscht wird). Die B-> A-Regel würde wahrscheinlich "annullieren". Wenn eine Bestellung gelöscht wird, entfernen Sie einfach den Verweis auf die Bestellung vom Kunden.

Die Beziehung löschen Regeln in der Apple Core Data Programming Guide

beschrieben sind
+1

Und „Tue nichts“ wird die Referenz einfach zu halten, ohne es wirklich vorhandenen, nicht wahr? – Shamy

+0

Ja, das Löschen von A mit einer "No Action" kann dazu führen, dass B auf eine nicht existierende A – Paulw11

+0

verweist "Nullify Entfernen Sie die Beziehung zwischen den Objekten, aber löschen Sie keines der Objekte. Dies ist nur sinnvoll, wenn die Abteilungsbeziehung für eine Mitarbeiter ist optional, oder wenn Sie sicherstellen, dass Sie vor dem nächsten Sicherungsvorgang eine neue Abteilung für jeden Mitarbeiter festlegen. Es heißt, "löschen Sie keines der Objekte". " Das ist wirklich verwirrend. Also, wenn ich wirklich A löschen möchte, kann ich die Regel nicht auf Null setzen? – LShi