nhibernate - 如何自动删除多对多关联(级联)

标签 nhibernate many-to-many nhibernate-mapping cascade

在我的数据库中,我有用户和用户组,它们具有多对多的关系。 User有一组UserGroup,UserGroup域对象看不到User。

<class name="User" table="UserTable">
    <set name="UserGroup" cascade="save-update" access="field.pascalcase-underscore" table="User2UserGroup">
        <key column="User_Id" />
        <many-to-many class="UserGroup" column="UserGroup_Id" />
    </set>
    ...

我想要实现的是,当我删除用户或用户组时,nhibernate 从联结表中删除相关性。另外 User 和 Group 是其子对象,我们称之为域。域确实cascade="all-delete-orphans" ,因此当域被删除时,它会级联删除其所有用户和用户组。

回到 User<->UserGroup 关系:如果我理解正确,我不能使用任何涉及删除的级联形式,因为我只想删除两个对象之间的关联而不是相关对象本身。 (一个组不会消失,即使它是一个孤儿。没有组的用户在我的世界中是有效的 - 他根本没有做任何事情的权利。)

我需要查看事件/拦截器吗?或者我可以通过控制映射来实现我想要实现的目标吗?

最佳答案

如果您正在使用支持它的数据库,您不能以外键约束的形式在数据库本身上设置级联吗?

关于nhibernate - 如何自动删除多对多关联(级联),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1569921/

相关文章:

c# - 查询多个数据库的存储库模式

python - 如何在 django 的两边设置多对多字段空白=真

linq-to-sql - 通过linq to sql删除多对多关系的正确方法?

fluent-nhibernate - Fluent nhibernate映射问题: many to many self join with additional data

c# - 使用 NHibernate/CaSTLe ActiveRecord 将枚举映射到数据库

asp.net-mvc - 使用 Fluent nHibernate 和 Ninject 实现 Multi-Tenancy 。每个租户一个数据库

LINQ to NHibernate - 将 guid 与字符串进行比较

sql - 如何检查数据库中是否存在动名词关系并且有效

nhibernate - 枚举解析似乎不适用于 Fluent NHibernate

c# - NHibernate seqhilo 如何生成 id?