繁体   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