Sto riscontrando un problema nel seeding del mio database con utenti e ruoli.Controllare se un utente ha un ruolo in asp.net mvc Identity
L'utente e il ruolo vengono entrambi creati (è possibile vederli nel database dopo che è stato generato l'errore).
Tuttavia, quando provo a verificare se l'utente ha un ruolo, ottengo un'eccezione.
Il mio codice è:
public class tbInitializer<T> : DropCreateDatabaseAlways<tbContext>
{
protected override void Seed(tbContext context)
{
ApplicationDbContext userscontext = new ApplicationDbContext();
var userStore = new UserStore<ApplicationUser>(userscontext);
var userManager = new UserManager<ApplicationUser>(userStore);
var roleStore = new RoleStore<IdentityRole>(userscontext);
var roleManager = new RoleManager<IdentityRole>(roleStore);
if(!userscontext.Users.Any(x=> x.UserName=="marktest"))
{
var user = new ApplicationUser { UserName = "marktest", Email = "[email protected]" };
userManager.Create(user, "Pa$$W0rD!");
}
if (!roleManager.RoleExists("Admin"))
{
roleManager.Create(new IdentityRole("Admin"));
}
if(!userManager.IsInRole("marktest","Admin"))
{
userManager.AddToRole("marktest","Admin");
}
Tuttavia, sulla linea:
if(!userManager.IsInRole("marktest","Admin"))
viene generata un'eccezione con l'errore: UserId not found.
l'utente e il ruolo sono entrambi nel database quando controllo dopo che l'eccezione è stata lanciata:
Chiunque può vedere quello che sto facendo di sbagliato?
Grazie per qualsiasi aiuto,
Mark
Hai provato 'SaveChanges()' prima di 'if (! UserManager.IsInRole (" marktest "," Admin "))'? – Bruniasty
Ciao - sì, ho aggiunto 'context.SaveChanges();' - appena prima di quella riga, ma è ancora lancia un'eccezione con lo stesso errore. Grazie, Mark – Mark
L'utente "marktest" è stato salvato in un database? – Bruniasty