Когда я сначала заполняю базу данных, используя код структуры сущностей, я получаю ошибку: «Тип сущности 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.
Любые идеи или помощь приветствуются.