Ich versuche, Elternobjekt mit einer Sammlung von untergeordneten Objekten zu speichern (einfügen), alle Objekte sind neu. Ich bevorzuge es, manuell anzugeben, was zu speichern \ update und wenn ich so bin, verwende ich keine Kaskadenspeicherung in Mappings und Flush-Sitzungen von mir. Also im Grunde speichere ich dieses Objektgraphen wie:NHibernate Parent-Childs speichern redundante SQL-Update ausgeführt
session.Save(Parent)
foreach (var child in Parent.Childs)
{
session.Save(child);
}
session.Flush()
ich diesen Code erwarten Eltern Zeile einzufügen, dann jedes Kind Reihe, aber NHibernate führt diese SQL:
INSERT INTO PARENT....
INSERT INTO CHILD ....
UPDATE CHILD SET [email protected] WHERE [email protected] //What the point of update if ParentId was set in previous query
Dieses Update-Anweisung ist absolut unnötig, ParentId wurde in INSERT bereits korrekt festgelegt. Wie werde ich es loswerden? Leistung ist sehr wichtig für mich.
überprüfen Sie dies, es kann helfen http://stackoverflow.com/questions/4315791/nhibernate-sets-foreign-key-in-secondary-update-rather-than-oni-initial-insert-vio –
Was sind Ihre Zuordnungen? –
@Jani: In der Tat hat es geholfen, danke. –