Ich habe ein Problem beim Seeding meiner Datenbank mit Benutzern und Rollen.Überprüfen, ob ein Benutzer in einer Rolle in asp.net mvc ist Identität
Der Benutzer und die Rolle werden beide erstellt (ich kann sie in der Datenbank sehen, nachdem der Fehler ausgelöst wurde).
Wenn ich jedoch versuche zu überprüfen, ob der Benutzer in einer Rolle ist, bekomme ich eine Ausnahme.
Mein Code ist:
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");
}
jedoch auf der Linie:
if(!userManager.IsInRole("marktest","Admin"))
Eine Ausnahme mit dem Fehler ausgelöst: UserId not found.
Die User und die Rolle sind beide in der Datenbank, wenn ich überprüfe, nachdem die Ausnahme ausgelöst wird:
Kann jemand sehen, was ich falsch mache?
Vielen Dank für jede Hilfe,
Mark
Haben Sie 'SaveChanges()' vor 'if (! UserManager.IsInRole (" marktest "," Admin "))'? – Bruniasty
Hi - Ja, ich habe 'context.SaveChanges();' - kurz vor dieser Zeile hinzugefügt, aber es gibt immer noch eine Ausnahme mit dem gleichen Fehler. Danke, Mark – Mark
Ist "marktest" Benutzer dann in einer Datenbank gespeichert? – Bruniasty