2010-12-27 4 views
0

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.

+1

ü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 –

+0

Was sind Ihre Zuordnungen? –

+0

@Jani: In der Tat hat es geholfen, danke. –

Antwort

0

Ich habe "Inverse" in Zuordnungen auf viele-zu-Eins-Sammlung vergessen.

Verwandte Themen