6
W jaki sposób umieszczasz użytkowników, role i konkretne jednostki aplikacji? Wygląda na to, że IdentityModel celuje w swój własny kontekst?Nazwy nasion i użytkowników, role?
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");
}
}
wygląda dobrze, dzięki! czy istnieje sposób na ukierunkowanie zarówno domyślnej bazy danych dla użytkowników/ról itp., jak i nowego kontekstu dbcontext dla jednostek, które będą mogły wysiać oba przy użyciu jednego initilizer? Wydaje się, że EF tworzy własny DbContext dla zarządzania kontem/Tożsamości, podczas gdy my jako deweloperzy celujemy w inny DbContext dla operacji crud na podmiotach/modelach? Czy rozumiem to poprawnie? – JReam
Ustawiamy nasze, aby czerpać z IdentityDbContext, więc mamy tylko 1 inicjalizator, migrację, itp. Zarówno dla klas tożsamości, jak i biznesowych. W przypadku większej architektury może to ograniczyć możliwość oddzielania danych w inny projekt lub repozytorium, ale działa dobrze dla nas. Julie Lerman ma kilka dobrych artykułów na ten temat. https://msdn.microsoft.com/en-us/magazine/jj883952.aspx –
Dzięki, Steve. Tak więc w powyższym przykładzie; po twoim if (! db.Users.Any()) {}, zacząłbyś tworzyć nowe obiekty dla klas biznesowych? – JReam