При заполнении базы данных выдается ошибка при попытке добавления роли пользователю с помощью UserManager. - PullRequest
0 голосов
/ 03 октября 2018

Когда я сначала заполняю базу данных, используя код структуры сущностей, я получаю ошибку: «Тип сущности IdentityRole не является частью модели для текущего контекста.»

Вот мой файл Configuration.cs

public Configuration()
        {
            AutomaticMigrationsEnabled = false;
        }

        protected override void Seed(ApplicationDbContext context)
        {
            //  This method will be called after migrating to the latest version.

            //  You can use the DbSet<T>.AddOrUpdate() helper extension method
            //  to avoid creating duplicate seed data.

            CreateRolesandUsers(context);
            CreateSystemConfigurations(context);
            GetPages(context);
        }

        // In this method we will create default User roles and Admin user for login
        private void CreateRolesandUsers(ApplicationDbContext context)
        {
 var roleManager = new RoleManager<ApplicationRole>(new RoleStore<ApplicationRole>(context));
            var userManager = new UserManager<ApplicationUser, string>(new UserStore<ApplicationUser>(context));

var roles = new Dictionary<string, string>
            {
                { "SYSADMIN", "System Administrator" },
                { "ADMIN", "Administrator" },
                { "MANAGER", "Manager"},
                { "EMPLOYEE", "Employee"},
                { "CLIENTADMIN", "Client Administrator" },
                { "CLIENTMGR", "District Manager" }
            };

            CreateRole(roles, roleManager);            

            List<ApplicationUser> users = new List<ApplicationUser>();
            ApplicationUser user1 = new ApplicationUser()
            {
                UserName = "TestUserNmae",
                FirstName = "TestFirstName",
                LastName = "TestLastName",
                Email = "someone@gmail.com",
                EmailConfirmed = true,
                SecurityQuestion = "Whate is favorite number?",
                SecurityAnswer = "23",
                IsActive = true,
                EmployeeId = "JK0023",
                LockoutEnabled = true,
                AccessFailedCount = 0,
                LockoutEndDateUtc = null,

            };
            users.Add(user1);
CreateUsers(users, userManager);
        }

private void CreateUsers(List<ApplicationUser> users, ApplicationUserManager userManager)
        {
            foreach (var user in users)
            {

                string userPWD = "Test123..";

                var chkUser = userManager.Create(user, userPWD);

                //Add default User to Role Admin
                if (chkUser.Succeeded)
                {
                    userManager.AddToRole(user.Id, "SYSADMIN"); <-- THIS IS WHERE THE ERROR HAPPENS
                }
            }
        }

        private void CreateRole(Dictionary<string, string> roles, RoleManager<ApplicationRole> roleManager)
        {            

            foreach (var role in roles)
            {
                if (!roleManager.RoleExists(role.Key))
                {
                    var newRole = new ApplicationRole
                    {
                        Name = role.Key,
                        Description = role.Value
                    };
                    roleManager.Create(newRole);
                }
            }
        }
}

Этот код работал до того, как я расширил класс IdentityRole для использования пользовательских свойств.Класс, который расширяет класс IdentityRole, называется ApplicatiionRole.

Любые идеи или помощь приветствуются.

...