[英]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.