你的位置:首页 > 软件开发 > 数据库 > 为用户分配角色 C#

为用户分配角色 C#

发布时间:2016-04-28 16:00:04
开发网站时,在后台管理系统中,如果有多类角色,将会涉及到为角色分配用户的功能,或者是为用户选择角色。为用户分配角色相对来说操作的数据量比较小,因为系统所设定的角色不会有很多种。而如果是为角色分配用户,操作的数据量就比较大。数据库表的设计 User_RoleUserIDRoleID ...

开发网站时,在后台管理系统中,如果有多类角色,将会涉及到为角色分配用户的功能,或者是为用户选择角色。为用户分配角色相对来说操作的数据量比较小,因为系统所设定的角色不会有很多种。而如果是为角色分配用户,操作的数据量就比较大。

数据库表的设计 User_Role

UserIDRoleID
11
12
13

 

 

 

需要修改角色对应的用户时,即在界面上重新勾选相应的用户,然后再保存,最开始采取的做法先删除该类角色对应的所有用户,然后在插入本次保存的用户ID。这种做法的效率很低。因为大多数情况下只是对某类角色下的个别用户进行添加或者删除。

把第一次存入User_Role表的所有UserID设为集合A,把修改后用户所勾选的所有用户的UserID设为集合B

为用户分配角色 C#   

             图一

大部分情况下,是如下图所示

为用户分配角色 C#

            图二

可能也会出现,原有的用户全部保留,又新添加一批用户。或者是在原有用户的基础上删除一些用户、分别如图三和图四所示

为用户分配角色 C#为用户分配角色 C#

          图三                                                                                          图四

public static async Task UpdateUsersOfRole(int roleid,IEnumerable<int> originuserids,IEnumerable<int> nowuserids)    {      if (null == nowuserids)        nowuserids = new int[] { };      if (null == originuserids)        originuserids = new int[] { };      using (MasonDB db = new MasonDB())      {        var deletelist = originuserids.Except(nowuserids);        if (deletelist.Count() > 0)        {           var todelete = deletelist.Select(urm => new User_Role { UserID = urm, RoleID = roleid }).ToArray();          //db.Entry(todelete).State = EntityState.Deleted;          foreach(var d in todelete)            db.Entry(d).State = EntityState.Deleted;          db.User_Role_Mappings.RemoveRange(todelete);         }        var addlist = nowuserids.Except(originuserids);        if(addlist.Count() > 0)          db.User_Role_Mappings.AddRange(addlist.Select(urm => new User_Role { UserID = urm, RoleID = roleid }).ToArray()          );        await db.SaveChangesAsync();      }        }

 


原标题:为用户分配角色 C#

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录