当前位置:  开发笔记 > 编程语言 > 正文

很多人在NHibernate中删除了级联

如何解决《很多人在NHibernate中删除了级联》经验,为你挑选了1个好方法。

我在一个系统中有一个场景,我尽可能地尽量简化.我们有一个(让我们称之为)人工制品的表格,可以通过任意数量的安全角色访问人工制品,安全角色可以访问任意数量的人工制品.因此,我们在数据库中有3个表 - 一个描述人工制品,一个描述角色,一个多对多关联表将人工制品ID与角色ID相关联.

在领域方面,我们有两个类 - 一个用于角色,一个用于人工制品.artefact类具有IList属性,该属性返回可以访问它的角色列表.(但是角色不提供获取可以访问的人工制品的属性).

因此,人工制品的nhibernate映射包含以下内容:


    
    

这一切都运行良好,如果我删除一个人工制品,关联表将被适当地清理,删除的人工制品和角色之间的所有引用都将被删除(虽然正确地删除了角色 - 因为我们不想删除孤儿).

问题是 - 如何删除角色并让它自动清除关联表.如果我目前尝试删除一个角色,我会得到一个引用约束,因为该角色的关联表中仍有条目.成功删除角色的唯一方法是查询链接到该角色的所有人工制品,从人工制品的角色集合中删除角色,更新人工制品然后删除角色 - 效率不高或不好,特别是在非简化的系统,角色可以与任何数量的其他表/对象相关联.

我需要能够向NHibernate提示我希望每当我删除一个角色时都要清除这个关联表 - 这是可能的,如果可以的话 - 我该怎么做?

谢谢你的帮助.



1> 小智..:

由于我正在寻找这个答案并在谷歌上找到这个帖子(没有回答)我想我会发布我的解决方案.有三个表:Role,RolesToAccess(ManyToMany),Access.

创建以下映射:访问:


      
      
    


      
      
    

角色:


      
      
    


      
      
    

如上所述,您可以使RolesToAccess属性受到保护,这样它们就不会污染您的模型.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有