Sorry, wenn dies eine Betrogene ist, konnte es nicht finden, aber nicht so recht wissen, was eigentlich zu suchen ...Kaskadierung in (N) Hibernate, welche Regeln brauche ich?
Ich habe drei Klassen, Parent
, Child
und Other
Parent
hat viele Child
wo Kind hat eine Parent_Id
Spalte
Other
einen Verweis durch eine Child_Id
Spalte zu einer Child
hält
Als ich Löschen Sie eine Parent
, ich möchte auch alle damit verbundenen Child
Objekte löschen. Wenn diese Child
-Objekte durch eine beliebige Other
Klassen referenziert werden, möchte ich ihre (die Other
Objekte) Child_Id
Referenzen aufgehoben werden.
Welche Kaskadenregeln brauche ich für die beiden Beziehungen?
Wird NHibernate auch Entitäten sowohl im Arbeitsspeicher als auch in der Datenbank aktualisieren?
I.e. Wenn ich eine Reihe von Parent
, Child
und Other
im Speicher (d. h. geladen von db, nicht transient) und sagen NH zu einem Parent
löschen, was passiert? Ich nehme an, die Objekte Parent
und Child
werden vorübergehend? Was passiert mit der Child
Eigenschaft von Other
Objekten?
Edit: bei Verwendung von All-Delete-Orphan, welche Klassen ein Objekt als ein Waisenkind? In dem obigen Beispiel ist eine Child
eine Waise, wenn ihr Elternteil Parent
gelöscht wird? Ist die Referenz von Other
wichtig, wenn eine Entität als verwaist betrachtet wird?
Dank
Danke für die Aufklärung.Wenn ich eine Eins-zu-viele von "Child" zu "Other" hätte, könnte ich cascade auf save-update setzen und das würde mir die benötigte Funktionalität geben, richtig? außer ich möchte nicht die bidirektionale Beziehung haben, ich will nur in der Lage sein, von "Other" zu "Child" zu gehen, nicht umgekehrt. –
Ich würde nicht speichern-aktualisieren Andere, weil Sie das Kind speichern. Unter der Annahme, dass "Andere" eine unabhängige Entität ist, die unabhängig vom untergeordneten Objekt erstellt und gelöscht wird, sollte sie nicht implizit durch Erstellen eines untergeordneten Objekts erstellt werden. Für mich ist das eine Art Best-Practice. Ich glaube nicht, dass das dein Problem lösen würde. Sie müssen den Verweis auf das Kind aus dem anderen trotzdem entfernen. Natürlich werden Sie die Referenzierung von Anderen leichter finden. –
hmm nein du hast recht, ok fair genug. Also heißt das, dass ich alle 'Anderen' in den Speicher laden muss und dann ihre 'Kind'-Referenzen aufheben muss? scheint teuer: s –