首页 新闻 会员 周边

实体框架关于 一个用户对应多个用户组,用户组又对应不同权限的问题

0
悬赏园豆:50 [已解决问题] 解决于 2014-08-29 15:03

小弟刚接触,可能问的问题比较业余,请大大多包含....

 

数据库5张表

user   用户表

userRoleMap 用户和角色对应表

role   角色表

roleMenuMap  角色和菜单权限对应表

menu  菜单权限表

我现在想给不同的角色分配不同的菜单,然后一个用户可以是多个角色,最后后台登录的时候,显示功能菜单(不重复)

比如 user 张三  可以是role里面的 仓库管理 和 销售管理 , 仓库管理和销售管理对应了很多菜单(可能会有重复的,但是菜单显示出来要唯一)

 

如果是用sql直接写的话,几个inner join就行了,但如果用实体框架的话该怎么做, 比如我想把把user实体里面弄个<list>menus 属性,来代表该用户可以使用的菜单 ,怎么做才能让实体框架自动去把几张表对应?

 

只给个大概的思路就行了,如果有相关的教程那最好了,在此谢过.....小弟新手,没有太多豆,希望大虾们不吝指点....

ssboy的主页 ssboy | 初学一级 | 园豆:122
提问于:2014-08-29 11:08
< >
分享
最佳答案
0

实体也一样的可以使用innerjoin来达到目的的。

收获园豆:50
519740105 | 大侠五级 |园豆:5810 | 2014-08-29 11:14

我是想在user实体里面 加一个 menus 属性....取出用户后,这个menus属性该怎么填充啊? 

还是用 database.SqlQuery 直接去查数据库 - -|

到底怎么设计能好些呢

ssboy | 园豆:122 (初学一级) | 2014-08-29 11:23

@ssboy: 你的这个思路是对的,但是,你的这个menus不能关联到menu表,否则就不好处理了。

对这个menus属性,调用扩展方法实现SQLQUERY就ok了,这样,实体计不牵涉到业务(交给扩展方法实现)又封装了属性(menus是user的一个集合属性)。

此外,你也可以通过存储过程、视图的方式为user提供menus关联。

519740105 | 园豆:5810 (大侠五级) | 2014-08-29 11:40

@519740105: 好的,谢谢,我写写试试.....有不明白的再继续追问,嘿嘿

ssboy | 园豆:122 (初学一级) | 2014-08-29 15:02

@ssboy: 我最近的项目也有这个需求,不过我的定义可能比你的复杂,到时可以一起探讨。

519740105 | 园豆:5810 (大侠五级) | 2014-08-29 15:07
其他回答(1)
0

这是常见权限实现的五张表,我尝试过,发现用实体来处理真不是一般的繁琐,繁琐到崩溃
后来还是采用了原生态的sql 

string sql = @"SELECT DISTINCT R.* FROM PopRight R,PopUser U,PopRole RL,RoleUser RU,RoleRight RR WHERE
U.ID={0} AND U.ID=RU.UserID AND RL.ID=RU.RoleID and RL.ID=RR.RoleID and R.ID=RR.RightID ORDER BY R.SortNo";

使用DbContext.Database.SqlQuery<Right>(sql, userID).ToList()

大浪淘沙 | 园豆:57 (初学一级) | 2014-09-26 15:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册