的情況如下,NHibernate的不級聯刪除兒童
我有3個對象(我簡化了名稱)命名父母,父母的孩子&孩子的孩子
父母的孩子是在父母一集,孩子的孩子是一羣孩子。
映射如下所示(相關部分)
父
<set name="parentset"
table="pc-table"
lazy="false"
fetch="subselect"
cascade="all-delete-orphan"
inverse="true">
<key column=FK_ID_PC" on-delete="cascade"/>
<one-to-many class="parentchild,parentchild-ns"/>
</set>
父母的孩子
<set name="childset"
table="cc-table"
lazy="false"
fetch="subselect"
cascade="all-delete-orphan"
inverse="true">
<key column="FK_ID_CC" on-delete="cascade"/>
<one-to-many class="childschild,childschild-ns"/>
</set>
我想要實現的是,當我刪除父,會有一個級聯刪除一路到孩子的小孩的槽。但目前發生的是這樣的。
(這純粹是爲了映射測試目的) 得到一個父實體(正常工作)
IQuery query = session.CreateQuery("from Parent where ID =" + ID);
IParent doc = query.UniqueResult<Parent>();
現在刪除部分
session.Delete(doc);
transaction.Commit();
已經解決了「不能插入空值」後錯誤與級聯和反轉我希望這將現在刪除與此代碼的一切,但只有父母被刪除。
我錯過了我的地圖中可能會被錯過的東西嗎?正確方向的任何提示都非常值得歡迎!
迭戈,謝謝你的提問。 (和解釋)
我去除了on-delete="cascade"
,這是因爲我喜歡在代碼中儘可能多地控制,而不是在數據庫中。
下面發佈的代碼是(工作)結果。
父
<set name="parentset"
table="pc-table"
cascade="all-delete-orphan"
inverse="true"
batch-size="5">
<key column=FK_ID_PC"/>
<one-to-many class="parentchild,parentchild-ns"/>
</set>
父母的孩子
<set name="childset"
table="cc-table"
cascade="all-delete-orphan"
batch-size="5"
inverse="true">
<key column="FK_ID_CC">
<one-to-many class="childschild,childschild-ns"/>
</set>
希望這有助於人同樣的問題!