NHibernate删除实体 - 检查引用

时间:2011-08-10 11:55:20

标签: c# nhibernate reference

当用户删除某个实体时是否有通用的解决方案来检查引用,并且因为有对它的引用而无法删除它? 我搜索一个适用于所有情况的解决方案。用户尝试删除,我可以检入我的DataAccess-Layer并给用户一条消息“由于有引用,实体无法删除”。你是如何解决这个问题的?

2 个答案:

答案 0 :(得分:0)

您需要映射相关实体并包含cascade='all-delete-orphan'选项。

答案 1 :(得分:0)

您不需要知道哪些引用,您可以在DAL中捕获FK异常,并将其包装到您的Service层中,并将其包含在ReferencedObjectsException中,并显示相应的错误消息。

否则,你必须查看映射(通过代码),确定引用(通过代码),并检查依赖性(通过代码)。

Rhino.Security在这里有一个映射重写部分:https://github.com/ayende/rhino-security/blob/master/Rhino.Security/Impl/MappingRewriting/UserMapper.cs,来自NHibernate配置对象,你可以访问类映射。