星空网 > 软件开发 > 数据库

为用户分配角色 C#

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

数据库表的设计 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();      }        }

 

如果不加

foreach(var d in todelete)  db.Entry(d).State = EntityState.Deleted;

会提示错误{"The object cannot be deleted because it was not found in the ObjectStateManager."}

 

为用户分配角色 C#

 




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

关键词:C#

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

泰国物流图片:https://www.goluckyvip.com/tag/88744.html
货运泰国收费:https://www.goluckyvip.com/tag/88746.html
泰国货运收费:https://www.goluckyvip.com/tag/88747.html
保健品寄到泰国:https://www.goluckyvip.com/tag/88748.html
到曼谷物流:https://www.goluckyvip.com/tag/88749.html
物流到曼谷:https://www.goluckyvip.com/tag/88750.html
TEMU亚马逊美国站ASTMF3186-17、16CFR1270成人活动床栏安全要求:https://www.kjdsnews.com/a/1836339.html
一线丨访曹县产业带,看中国传统服饰出海如何杀出一个春天?:https://www.kjdsnews.com/a/1836340.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流