Unerwartete Zeilenanzahl in Nhibernate, wenn übergeordnete Datensätze mit den zugehörigen untergeordneten Datensätze löschen
-
21-09-2019 - |
Frage
Ich habe eine übergeordnete Tabelle, Aufträge und ein Kind Tisch, [Order Details], ich habe Setup die fließend Mappings als -
(In der übergeordneten Order-Klasse)
HasMany<OrderDetails>
(x => x.Details).KeyColumn("OrderId").Cascade.AllDeleteOrphan().Inverse();
(Im Kind [Order Details] Klasse)
References(x => x.ParentOrder).Column("OrderId").Not.Nullable().Cascade.None();
Ich versuche, das übergeordnete Objekt durch den Aufruf zu löschen -
session.Delete(parent);
session.Flush();
Dies funktioniert nur, wenn es nur ein untergeordneter Datensatz ist, wenn mehr als ein Kind Aufzeichnungen sind, erhalten die Kinder gelöscht, aber die Eltern nicht !!! Und ich bekomme die gefürchteten -. Unerwartete Reihe Zählfehler
Ich bin sicher, dass dies etwas albern ist, dass ich tue, aber Schleppen durch die Bahn haben nichts aufgedreht.
Danke
Lösung
Ok, dachte ich, dies, war es mir dumm zu sein, aber dann ist die Antwort helfen könnte jemand anderes, so hier geht.
Die [Order Details] Tabelle hat einen zusammengesetzten Schlüssel und ist mit den beiden [Orders] verknüpft und Tabelle [Products] (Ja, das ist die Northwind-Datenbank, dass mit denen ich arbeite). Für meinen Test hatte ich meine Produkte nicht Tabelle zugeordnet, und hatte meine [Order Details] Klasse mit einem einzelnen Primärschlüssel anstelle eines zusammengesetzten Schlüssel markiert. Also, wenn Nhibernate Zeilen gelöscht basierend auf dem Schlüssel, erwartet er, um zu sehen nur eine Zeile gelöscht werden, während mehrere in der Datenbank existiert. Welches ist, warum ich die Fehler. Eher klug von Nhibernate.