Mi sono imbattuto in un problema di seeding del database con Identity v2. Ho separato IdentityModel dal progetto MVC5 al mio Data Access Layer dove ho impostato anche le Migrazioni EF. Così ho commentato il codice che utilizzano "IdentityConfig.cs" all'interno per creare utente iniziale e mettere il codice all'interno mio database seme che assomiglia a questoDatabase di semi per Identity 2
protected override void Seed(Repository.DataContext.IdentityDb context)
{
// var userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
// var roleManager = HttpContext.Current.GetOwinContext().Get<ApplicationRoleManager>();
var owinContext = new OwinContext();
var userManager = owinContext.GetUserManager<ApplicationUserManager>();
var roleManager = owinContext.Get<ApplicationRoleManager>();
const string name = "[email protected]";
const string password = "[email protected]";
const string roleName = "Admin";
// //Create Role Admin if it does not exist
var role = roleManager.FindByName(roleName);
if (role == null)
{
role = new IdentityRole(roleName);
var roleresult = roleManager.Create(role);
}
var user = userManager.FindByName(name);
if (user == null)
{
user = new ApplicationUser { UserName = name, Email = name };
var result = userManager.Create(user, password);
result = userManager.SetLockoutEnabled(user.Id, false);
}
// // Add user admin to Role Admin if not already added
var rolesForUser = userManager.GetRoles(user.Id);
if (!rolesForUser.Contains(role.Name))
{
var result = userManager.AddToRole(user.Id, role.Name);
}
}
Ora, quando sto facendo funzionare comando update-base di dati, ho ottenuto un errore di
Value cannot be null.
Parameter name: manager
sembra, sto ottenendo nulla in queste due righe di codice
var userManager = owinContext.GetUserManager<ApplicationUserManager>();
var roleManager = owinContext.Get<ApplicationRoleManager>();
Qualsiasi suggerimento per favore?
Look at Linea 51 qui: https://raw.githubusercontent.com/OdeToCode/MVC5_Samples/master/identity/BasicIdentityWithDiagrams /Migrations/Configuration.cs Non penso che avrai successo usando Owin nel metodo Seed a meno che tu non stia utilizzando Seed all'interno dell'app. Owin non sarà in giro o configurato se si esegue Seed dalla console del gestore pacchetti. – OdeToCode