Sql语法高级应用之一:使用sql语句如何实现不同的角色看到不同的数据
前言
在常见的管理系统中,通常都有这样的需求,管理员可以看到所有数据,部门可以看到本部门的数据,组长可以看到自己组的数据,组员只能看到自己相关的数据。
一般人的做法是,根据不同的角色通过if...else嵌套实现。这样做会显得代码过于臃肿。下面分享我的解决方案:
实现方案
通过sql语句,配合存储过程一段代码就搞定了,下面附上实现代码:
sql += " AND (" + adminStr + " OR (" + saleStr + " AND SalesGroupId IN('" + string.Join("','", mgroupList) + "')) OR (" + gmgStr + " AND SalesGroupId = '" + sg.Key + "') OR SalesUserId = '" + user.Id + "')";
return sql;
adminStr:是判断是否是管理员
saleStr:判断是否是部门
mgroupList:部门的组列表
gmgStr:是否是组长(组管理者)
使用EF+Linq语句实现方案:
也是一段代码就搞定了,代码简洁而美观。