在集合上指定级联,让NHibernate为您解决问题
http://ayende.com/Blog/archive/2006/12/02/NHibernateCascadesTheDifferentBetweenAllAlldeleteorphansAndSaveupdate.aspx
http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/example-parentchild.html
好的,我已经看到你已经做到了.:)你没有做的,是指定反向引用.我的意思是:你在你的收藏中添加了一个项目,但这个添加的项目有一个属性给它的主人,你没有设置:
Order o = new Order(); OrderDetail detail = new OrderDetail (); detail.Order = o; o.OrderLines.Add (detail);
什么会更好(imho)是这(简化):
public class Order { private IList_details = new List (); public ReadOnlyCollection Details { return new List(_details).AsReadOnly(); } public void AddOrderLine( OrderDetail d ) { d.Order = this; _details.Add (d); } public void RemoveOrderLine( OrderDetail d ) { _details.Remove (d); } }