我正在與nHibernate合作,試圖理解包集合。我的數據結構是相對直接...添加/刪除項目到包集合
項:
<class name="Entry">
<id name="id" column="EntryId">
<generator type="guid.comb"/>
</id>
<property name="Name" column="Name"/>
<bag name="Results" table="Results" cascade="all">
<key column="EntryId" />
<one-to-many class="Result"/>
</bag>
</class>
結果:
<class name="Result">
<id name="id" column="ResultId">
<generator type="guid.comb"/>
</id>
<property name="Score" column="Score" />
<many-to-one name="Entry" class="Entry" cascade="all" />
</class>
我想這樣做,這似乎並不奏效,是如下:
Entry entry = new Entry();
entry.Name = "Name";
// have tried saving at this point to:
// dbSession.SaveOrUpdate(entry);
Result result = new Result();
result.Score = 100;
entry.Results.Add(result);
dbSession.SaveOrUpdate(entry);
它似乎是在數據庫中創建條目記錄,但不是結果記錄。在我的數據庫中,我將EntryId作爲結果表中的外鍵。同樣,我希望能夠從集合中刪除結果對象,並將其保留到數據庫中。我以爲級聯功能,照顧了這一點,但不知道我做錯了......
編輯
現在我將它添加結果對象到數據庫中,但刪除似乎並不工作:
Entry entry = Entry.Load(id);
entry.Results.Remove(result);
dbSession.SaveOrUpdate(entry);
我已經嘗試添加級聯=「所有刪除孤兒」,但這似乎刪除父母和子女。我只想要它從數據庫中刪除一個入口對象?
我也這麼認爲,但事實並非如此。我提供了答案。 – mickyjtwin 2010-09-15 07:01:47