C# 当所有内容都与nhibernate(orm)中的用户相关时管理类
首先,我有三个实体 用户、角色、项目 一个用户可以有多个角色。 将项目分配给一个或多个角色 因此,用户将有权访问一组不同的项 现在有几种方法可以让我看到这一点C# 当所有内容都与nhibernate(orm)中的用户相关时管理类,c#,asp.net,nhibernate,hibernate,orm,C#,Asp.net,Nhibernate,Hibernate,Orm,首先,我有三个实体 用户、角色、项目 一个用户可以有多个角色。 将项目分配给一个或多个角色 因此,用户将有权访问一组不同的项 现在有几种方法可以让我看到这一点 在用户上有一个集合,该集合通过多对多关联具有角色。然后,此集合中的每个角色都有自己的项目集合。因此,对于每个用户,我必须获取用户(使用nhib并获取角色和项目),然后对每个角色中的项目执行selectMany以获取用户的所有项目,或者执行几个foreach以将数据移植到视图或dto模型 创建一个db触发器以自动插入到另一个表中,该表仅具有
干杯看看codeplex。它是ASP.Net成员身份的一个实现。因此,它有角色、用户和应用程序。这可能会给您一些关于如何继续的想法。逻辑映射是用户被分配到许多角色(如果您确实需要跟踪,则反向存在角色有许多用户),并且项目对许多角色可见(同样,只有当您确实需要跟踪时,才应创建反向) Ayende通过Rhino安全解决了这个问题。看看他所有关于它的博客帖子。本质上,他使用NHibernate拦截器来扩展任何带有安全信息的查询,这意味着一旦您设置了权限,它“就可以工作”,您就不必担心在查询中添加安全问题 如果不想使用此选项检索/显示给定用户的所有项目,则需要选择该用户所属角色可见的所有项目:
从我的头顶上注销,因此可能需要进一步调整。澄清:您是否可以为实体添加额外的约束,以将多对多关系减少为一对多?例如,定义项目以特定方式映射到角色。您使用的是哪种查询API?林克?