6
Come si seminano utenti, ruoli e entità specifiche per app? Sembra che IdentityModel abbia come target il proprio contesto?Entità e utenti di semi, ruoli?
internal sealed class Configuration : DbMigrationsConfiguration<Project.Models.SchoolContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
protected override void Seed(Project.Models.SchoolContext context)
{
// Seed the Entities
// context.People.AddOrUpdate(
// p => p.FullName,
// new Person { FullName = "Andrew Peters" }
// );
//
}
}
vs.
protected override void Seed(Project.Models.ApplicationDbContext context)
{
if (!context.Roles.Any(r => r.Name == "AppAdmin"))
{
var store = new RoleStore<IdentityRole>(context);
var manager = new RoleManager<IdentityRole>(store);
var role = new IdentityRole { Name = "AppAdmin" };
manager.Create(role);
}
if (!context.Users.Any(u => u.UserName == "founder"))
{
var store = new UserStore<ApplicationUser>(context);
var manager = new UserManager<ApplicationUser>(store);
var user = new ApplicationUser {UserName = "founder"};
manager.Create(user, "ChangeItAsap!");
manager.AddToRole(user.Id, "AppAdmin");
}
}
sembra buono, grazie! c'è un modo per indirizzare sia il db di default per utenti/ruoli ecc. sia un nuovo dbcontext per le entità che seminano entrambi con un initilizer? Sembra che EF configuri il proprio DbContext per la gestione degli account/Identità mentre noi, come sviluppatori, abbiamo scelto un DbContext diverso per le operazioni di crudizzazione su entità/modelli? Sto comprendendo questo correttamente? – JReam
Abbiamo impostato il nostro fino a derivare da IdentityDbContext, quindi abbiamo solo 1 inizializzatore, migrazione, ecc. Per entrambe le classi identità e business. Per un'architettura più grande potrebbe limitare la tua capacità di separare le informazioni in un progetto o repository diverso, ma funziona bene per noi. Julie Lerman ha un paio di buoni articoli sull'argomento. https://msdn.microsoft.com/en-us/magazine/jj883952.aspx –
Grazie, Steve. Quindi nell'esempio sopra; dopo il tuo if (! db.Users.Any()) {}, inizieresti a creare nuovi oggetti per le classi di business? – JReam