Ich entwickle eine Beispielanwendung, damit ich die Besonderheiten von NHibernate lernen kann. Ich habe Probleme mit einem Löschproblem. Ich möchte in der Lage sein, einen untergeordneten Datensatz zu löschen, indem ich ihn aus der Auflistung seiner übergeordneten Elemente lösche und dann den übergeordneten Datensatz speichere. Ich habe eine bidirektionale Eins-zu-viele-Beziehung eingerichtet und das Einfügen / Aktualisieren funktioniert großartig.
Hier sind meine Abbildungen
Korb:
<bag name="Items" inverse="true" cascade="all">
<key column="BasketId" />
<one-to-many class="BasketItem" />
</bag>
BasketItem:
<many-to-one not-null="true" name="Basket" column="BasketId" />
Ich möchte basket.RemoveBasketItem(BasketItem item)
und dann Session.SaveUpdate(basket)
aufrufen, damit der Warenkorb gelöscht wird. Ist das möglich?
Ändern Sie cascade="all"
in cascade="all-delete-orphan"
.
cascade="all"
löscht nur Ihre untergeordneten Datensätze, wenn der übergeordnete Eintrag gelöscht wird.
Ich habe das gleiche Szenario und ich benutze cascade="all-delete-orphan" in bagList, aber wenn ich ein einzelnes untergeordnetes Element in einer Sammlung lösche, löscht es auch das übergeordnete Objekt.
Ich hatte das gleiche Problem wie initthoney, weil ich eine neue Liste als ReadOnly aus meinem Sammlungsgetter zurückgebe. Ich habe festgestellt, dass ich die ReadOnly-Liste weiterhin verwenden kann, indem ich die Eigenschaft Zugriffsstrategie der Sammlung von nosetter
auf field
ändere.
Tags und Links parent-child nhibernate