【问题标题】:how to get users list depending on their roles in Entity Framework 6如何根据 Entity Framework 6 中的角色获取用户列表
【发布时间】:2016-01-09 13:12:49
【问题描述】:

我使用 MVC5 EntityFramework 6

我有一个带有用户列表的诊所应用,每个用户都有帐户角色(医生、护士、实验室)

如何创建 (Doctors) 或 (Nurse) 或 (Lab) 的 DropDownList

所有用户和角色都是默认预定义的(个人用户帐户)

用户是 (ApplicationUser) 角色是 (IdentityRole) 我将表名更新为 Video

所有用户都在同一个表中 Users 所有角色都在 Roles 中,我在 UserRoles 表中合并它们

【问题讨论】:

    标签: asp.net-mvc-5 entity-framework-6


    【解决方案1】:

    使用以下代码解决

    在控制器中

    string DoctorRoleID = roleManager.FindByName("Doctor").Id;
    ViewBag.DoctorID = new SelectList(db.Users.Where(u => u.Roles.Any(r => r.RoleId == DoctorRoleID)).ToList(), "Id", "Email");
    

    在视图中

    <div class="form-group">
                <div class="col-md-2">
                    @Html.LabelFor(model => model.DoctorID, "DOCTOR", htmlAttributes: new { @class = "control-label col-md-2" })
                </div>
                <div class="col-md-10">
                    @Html.DropDownList("DoctorID", null, htmlAttributes: new { @class = "form-control" })
                    @Html.ValidationMessageFor(model => model.EndUserID, "", new { @class = "text-danger" })
                </div>
            </div>
    

    【讨论】:

      【解决方案2】:

      假设您的下拉列表的数据是 id 和值对,那么您只需要选择不同的查询 - 但返回相同的类型 - 取决于所需的数据。

      例如。

      IEnumerable<KeyValuePair<int, string>> GetNames(NameType nt) {
      
        if (nt == NameType.Nurse) {
          return from n in db.Nurses
                 select new KeyValuePair {
                   Key = n.Id,
                   Value = n.Name
                 };
        } else if (nt == NameType.Doctor) {
          return from d in db.Doctors
                 select new KeyValuePair {
                   Key = d.Id,
                   Value = d.ProfessionalDisplayName
                 };
        }
      
        [...]
      
      }
      

      当然可以使用自定义类型(包括匿名:同一个程序集中的所有匿名类型具有相同的成员(名称和值)以相同的顺序是相同的类型);并在 id 中编码人的类型(例如,单独保存跟踪)。

      【讨论】:

      • 我更新了我的问题,所有用户都在同一个表中 Users 所有角色都在 Roles 中,我将它们组合在 UserRoles 表中
      • @AbdallahSabri 您是否在问如何在用户、角色中的用户和角色表之间进行简单连接?
      • 是的,我需要根据他们的角色创建一个用户下拉列表
      • 所以只需执行必要的数据库查询:但这取决于您拥有的数据库结构。但是您需要将用户加入 usersInRoles 到角色并过滤角色。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多