這裏是我的代碼:NHibernate的一個一對多的映射:插入子項問題
Order order = new Order { ... };
OrderItem item = new OrderItem { ... };
order.Items.Add(item);
item.Order = order;
using(var tran = session.BeginTransaction()) {
session.Save(order);
// Without this, an exception will be thrown: Unexpected row count: 0; expected: 1
// session.Save(item);
tran.Commit();
}
如果我取消對該行session.Save(item)
,它會插入的順序和項目。否則,它會拋出異常「意外行數:0;預期:1」。
如果我標誌着許多終端(項目屬性)的逆=「真」,沒有會拋出異常,但只插入訂購!訂單商品不會被插入到數據庫中。
如果我打電話session.Save(item)
不調用session.Save(order)
,它插入的順序和它的項目。
如何在不致電session.Save(orderItem)
的情況下保存訂單及其訂購商品,但只需致電session.Save(order)
?謝謝!
這裏是我的映射:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Core" assembly="Core">
<class name="Order" table="[Order]">
<id name="Id">
<generator class="assigned" />
</id>
<property name="Name" />
<bag name="Items">
<key column="CategoryId" />
<one-to-many class="Core.OrderItem, Core"/>
</bag>
</class>
<class name="OrderItem">
<id name="Id">
<generator class="assigned" />
</id>
<property name="Title" />
<many-to-one name="Order" column="OrderId" cascade="save-update" not-null="true" />
</class>
</hibernate-mapping>
謝謝!我在錯誤的位置添加「級聯」屬性! :( – 2011-03-11 14:27:38