繁体   English   中英

向ASP.Net Identity添加角色时出错

[英]Error in adding roles to ASP.Net Identity

我的代码是这样的

    namespace DiagnosisApp.Models
{
    public class ApplicationUser : IdentityUser
    {

    }
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("DiagnosisContext")
        {
        }
    }
}

    namespace DiagnosisApp.DAL
{
    public class DiagnosisInitializer : DropCreateDatabaseIfModelChanges<DiagnosisContext>
    {
        protected override void Seed(DiagnosisContext context)
        {
            var userManager = new UserManager<ApplicationUser>(new
                UserStore<ApplicationUser>(context));

            var roleManager = new RoleManager<IdentityRole>(new
                RoleStore<IdentityRole>(context));

            string name = "Admin";
            string password = "123456";


            //Create Role Admin if it does not exist
            if (!roleManager.RoleExists(name))
            {
                IdentityResult roleresult = roleManager.Create(new IdentityRole(name));
            }

            //Create User=Admin with password=123456
            var user = new ApplicationUser();
            user.UserName = name;
            IdentityResult adminresult = userManager.Create(user, password);

            //Add User Admin to Role Admin
            if (adminresult.Succeeded)
            {
                IdentityResult result = userManager.AddToRole(user.Id, name);
            }
            base.Seed(context);
        }
    }
}

    namespace DiagnosisApp.DAL
{
    public class DiagnosisContext : DbContext
    {
        public DiagnosisContext()
            : base("DiagnosisContext")
        {
            Database.SetInitializer(new DiagnosisInitializer());
        }
    }
}

一切对我来说还不错,但这会引发错误

实体类型IdentityRole不是当前上下文模型的一部分。

在线

 if (!roleManager.RoleExists(name))

谁能指出我在这里做错了什么?

检查DiagnosisContext类是否具有有效的签名,如下所示:

public class DiagnosisContext : IdentityDbContext<MyUser>

要么

public class DiagnosisContext : IdentityDbContext

您的播种方法

protected override void Seed(DiagnosisContext context)

在接受一个DiagnosisContext只从香草的DbContext继承。 您应该传入ApplicationDbContext

protected override void Seed(ApplicationDbContext context)

DbContext上没有IdentityRole。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM