c# - Cascade Update one-to-many with NHibernate -
i'm struggling nhibernate mapping problem. i'm using repository/unitofwork pattern, , i'm trying cascade-persist objects through update method. example: can alter foo, adding/updating/deleting bar objects , it's ok. when try add son , daughter objects "bar", , update foo (to persist bar , child objects), son , daughter objects not persisted db, foo bars (without son/daughter objects).
public class foo { public int fooid {get; set;} public string name {get; set;} public virtual ilist<bar> bars {get; set;} public foo(){} } public class bar { public int barid {get; set;} public string name {get; set;} public foo foo {get; set;} public virtual ilist<son> sons {get; set;} public virtual ilist<daughter> daughters {get; set;} public bar(){} } public class son { public int sonid {get; set;} public string name {get; set;} public virtual bar bar {get; set;} public son(){} } public class daughter { public int daughterid {get; set;} public string name {get; set;} public virtual bar bar {get; set;} public daughter(){} } //on foo.hbm.xml have: ... <bag name="bar" table="bar" inverse="true" cascade="all-delete-orphan" lazy="false"> <key column="fooid" /> <one-to-many class="bar" /> </bag> //on bar.hbm.xml have ... <many-to-one name="foo" column="fooid" class="foo" lazy="false" /> <bag name="son" table="son" inverse="true" cascade="all-delete-orphan" lazy="false"> <key column="sonid" /> <one-to-many class="son" /> </bag> <bag name="daughter" table="daughter" inverse="true" cascade="all-delete-orphan" lazy="false"> <key column="daughterid" /> <one-to-many class="daughter" /> </bag> //on son/daughter.hbm.xmli have ... <many-to-one name="bar" column="barid" class="bar" lazy="false" /> where i'm doing wrong? thank in advance!
try following test :
var newfoo = new foo(); var newbar = new bar(); var newson = new son(); _session.save(newbar); newson.bar = newbar; newbar.sons.add(newson); foo.bar = newbar;
Comments
Post a Comment