ASP.NET Core usermanger is not saving user roles to AspNetUserRoles table

38 Views Asked by At

This is my code - startup.cs:

services.AddDbContext<AuthDBContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

services.AddIdentity<User, IdentityRole>()
        .AddEntityFrameworkStores<AuthDBContext>()
        .AddDefaultTokenProviders();

DatabaseContext.cs:

public class AuthDBContext : IdentityDbContext<User>
{
    public AuthDBContext(DbContextOptions<AuthDBContext> options) : base(options)
    {  }

    public DbSet<User> Users { get; set; }
    public DbSet<Building> Buildings { get; set; }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);

        builder.ApplyConfiguration(new RoleConfig());           
    }
}

UserEntity.cs:

public class User : IdentityUser
{
    public string Firstname { get; set; } 
    public string Lastname { get; set; }
}

When debugging, both user and roles objects are passed with data via await userManager.AddToRolesAsync(), however when I check database, userRoles are not there.

I also tried calling await context.SaveChanges() and still no data appears in the database.

UserService.cs:

public async Task AddRoles(UserDto userDto)
{
    var roles = new List<string>();

    if (userDto.Roles == null)
    {
        roles.Add("User");   //Set Default Role if Null
    }
    else
    {
        foreach (var role in userDto.Roles)
        {
            roles.Add(role);
        }
    }

    var user = mapper.Map<User>(userDto);
    await userManager.AddToRolesAsync(user, roles);
}

NB. I have already added Roles to aspnetroles table like so

List of Role on the Database

0

There are 0 best solutions below