C# 如何在RoleProvider类中实现AddUsersToRoles方法?

C# 如何在RoleProvider类中实现AddUsersToRoles方法?,c#,asp.net-mvc,entity-framework,authorization,user-roles,C#,Asp.net Mvc,Entity Framework,Authorization,User Roles,我正在开发一个简单的mvc应用程序,通过一个选择列表显示所有用户,通过另一个选择列表显示所有角色。我想从用户下拉列表中选择用户,从角色下拉列表中选择角色。我已经做了所有的事情,但我不知道如何在角色提供者类中实现AddUsersToRoles方法,而且我也没有从internet上得到任何示例。请给我一个AddUsersToRoles方法的示例。我尝试过这样做,但它给出了一个错误,无法将类型字符串[]隐式转换为int。请提供一个解决方案 public override void AddUsers

我正在开发一个简单的mvc应用程序,通过一个选择列表显示所有用户,通过另一个选择列表显示所有角色。我想从用户下拉列表中选择用户,从角色下拉列表中选择角色。我已经做了所有的事情,但我不知道如何在角色提供者类中实现AddUsersToRoles方法,而且我也没有从internet上得到任何示例。请给我一个AddUsersToRoles方法的示例。我尝试过这样做,但它给出了一个错误,无法将类型字符串[]隐式转换为int。请提供一个解决方案

  public override void AddUsersToRoles(string[] usernames, string[] roleNames)
    {
        EmployeeDBContext context = new EmployeeDBContext();
        UserRolesMapping userRolesMapping = new UserRolesMapping();
        
        userRolesMapping.RoleID = roleNames;
        userRolesMapping.UserID = usernames;
        context.SaveChanges();

    }

有一个在Microsoft的应用程序上实现此方法的示例

您可能需要将该示例的后半部分更改为Odbc,因为您使用的是EntityFramework标记

本质上,您需要另一个数据库表UsersInRoles来将用户链接到角色。然后,在该表中为用户名和角色名的每个组合创建一行

-编辑:

根据你的例子,看起来你走的方向是正确的。但是,您正在尝试将字符串存储到int属性中

我不知道您的确切模型结构,但它应该是这样的:

public override void AddUsersToRolesstring[]用户名,string[]角色名 { 使用EmployeeDBContext上下文=新建EmployeeDBContext { 如果context.UsersInRoles==null { context.UsersInRoles=新列表; } 用户名中的foreach字符串用户名 { roleName中的foreach字符串roleName { 如果使用RoleUserName,则roleName继续; UserRolesMapping userRoleMapping=新的UserRolesMapping; userRoleMapping.Role=roleNames; userRoleMapping.User=用户名; context.UsersInRoles.AdduserRoleMapping; } } 上下文变化; } } 私有静态bool IsUserInRolestring用户名,字符串roleName { 使用EmployeeDBContext上下文=新建EmployeeDBContext { var userRole=context.UsersInRoles.FirstOrDefaultx=>x.User==username&&x.Role==roleName; 返回userRole!=null; } }
请注意,您将需要进行其他代码更改以实现此功能,即,此示例中的角色和用户是字符串,而不是int

请参阅我的代码,我这样尝试过,但它给出了一个错误,无法隐式地将类型string[]转换为int。我应该怎么做?请帮忙。我已经用一个例子编辑了我的答案。您将需要更改项目中的一些代码,并调整我的建议以使用您的代码。