Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 让角色管理器使用现有数据库_C#_Asp.net_Sql Server_Entity Framework_Asp.net Identity - Fatal编程技术网

C# 让角色管理器使用现有数据库

C# 让角色管理器使用现有数据库,c#,asp.net,sql-server,entity-framework,asp.net-identity,C#,Asp.net,Sql Server,Entity Framework,Asp.net Identity,我正在使用ASP.NETMVC和EntityFramework,并试图找出如何让角色管理器工作。在我最初注册了一个用户,触发EF来构建用户管理/标识表之后,我最终将他们AspNetUsers、AspNetRoles、AspNetUserRoles、AspNetUserClaims和AspNetUserLogins移动到我的现有数据库,并将默认连接设置为指向那里。在我决定需要实现角色管理器之前,一切都很顺利,在我的web.config中添加了以下条目之后 <roleManager enabl

我正在使用ASP.NETMVC和EntityFramework,并试图找出如何让角色管理器工作。在我最初注册了一个用户,触发EF来构建用户管理/标识表之后,我最终将他们AspNetUsers、AspNetRoles、AspNetUserRoles、AspNetUserClaims和AspNetUserLogins移动到我的现有数据库,并将默认连接设置为指向那里。在我决定需要实现角色管理器之前,一切都很顺利,在我的web.config中添加了以下条目之后

<roleManager enabled="true" defaultProvider="RoleManager">
    <providers>
      <add name="RoleManager"
           type="System.Web.Security.SqlRoleProvider"
           connectionStringName="DefaultConnection"
           applicationName="MyApp" />
    </providers>
</roleManager>
当我试图创建一个角色Roles.CreateRoleAdmin[附带问题,在VS 2013的代码之外有没有其他方法可以做到这一点?]时,我遇到了一个错误:找不到存储过程“dbo.aspnet_CheckSchemaVersion”。所以我自然地假设表不是生成的唯一数据库对象,但是在检查了原始mdf之后,事实证明,这就是所有的。我现在完全不知所措,任何帮助都将不胜感激


更新:我已经查找了与使用aspnet_reqsql工具添加角色管理器功能相关的解决方案,但是生成的表似乎不兼容。例如,dbo.aspnet_用户而不是dbo.AspNetUsers。

看来,表AspNetUsers、AspNetRoles、AspNetUserRoles、AspNetUserClaims和AspNetUserLogins是较新的ASP.NET身份系统的一部分,而aspnet_用户等是旧系统成员身份的一部分。Roles.CreateRole来自成员身份,而不是身份。对于标识系统,roleManager web.config条目是不必要的,可以使用Microsoft.AspNet.Identity.roleManager创建角色。例如:


表AspNetUsers、AspNetRoles、AspNetUserRoles、AspNetUserClaims和AspNetUserLogins似乎是较新的ASP.NET标识系统的一部分,而aspnet_用户等则是旧系统成员身份的一部分。Roles.CreateRole来自成员身份,而不是身份。对于标识系统,roleManager web.config条目是不必要的,可以使用Microsoft.AspNet.Identity.roleManager创建角色。例如:


你的假设是正确的!要使标识正常工作,您需要删除web.config中与旧MembershipProvider相关的部分。@noelicus干杯!这当然是一个令人头痛的问题。你的假设是正确的!要使标识正常工作,您需要删除web.config中与旧MembershipProvider相关的部分。@noelicus干杯!这无疑是一个令人头痛的问题。
RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new MyDbContext()));
var roleresult = RoleManager.Create(new IdentityRole(roleName));