簡體   English   中英

Hibernate級聯刪除包

[英]Hibernate cascade delete on a bag

使用NHibernate構建了大部分DAL后,我現在發現在我的HBM文件中也需要考慮SQL Server的Cascade On Delete規則。 我一直在為我的所有收藏品使用包,但似乎沒有辦法將一個cascade =“delete”屬性添加到包中。 我可以將所有行李更改為套裝,但這似乎意味着我已將我模型上的所有IList <>更改為PersistentGenericSet <> s,我並不喜歡這樣做。

有什么建議?

安東尼

有兩個獨立但相關的概念:NHibernate的級聯規則和DB級聯。

后者實際上是在key元素上配置的,所以,如果FK有ON DELETE CASCADE ,這就是包應該是這樣的:

<bag name="Children" ...>
  <key column="ParentId" on-delete="cascade"/>
  <one-to-many class="Child"/>
</bag>

您可以向行李貼圖添加級聯屬性。 文檔列出了屬性cascade="all|none|save-update|delete|all-delete-orphan"幾個選項。 一對多關系最常用的選項是all-delete-orphan 將級聯設置為此值將導致所有數據庫操作級聯到集合,並且如果從集合中刪除子對象(孤立對象),則將刪除子對象。

數據庫級聯類似,但不提供自動刪除孤立子記錄的功能。 在NHibernate和數據庫中設置級聯選項有點多余,但如果您有其他系統直接訪問數據庫,則可能很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM