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
