Les semences des Entités ET des Utilisateurs, des Rôles?
Comment faites-vous les semences des utilisateurs, des rôles et des applications spécifiques, entités? Il semble que la IdentityModel objectifs de son propre Contexte?
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");
}
}
OriginalL'auteur JReam | 2015-04-08
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas de graines de la migration, utilisez plutôt le contexte db initialiseur. Mon contexte de dérive de IdentityDbContext j'ai donc utiliser cette méthode pour les semences des utilisateurs et des rôles:
Appel et de l'initialiseur de ctor:
Puis mon code graine:
Nous avons réglé le nôtre jusqu'à tirer de IdentityDbContext donc nous avons 1 initialiseur, migration, etc pour à la fois l'identité et de classes d'affaires. Pour une plus grande architecture, il peut limiter votre capacité à séparer les données des trucs dans un autre projet ou référentiel, mais il fonctionne bien pour nous. Julie Lerman a un couple de bons articles sur le sujet. msdn.microsoft.com/en-us/magazine/jj883952.aspx
Merci, Steve. Ainsi, dans l'exemple ci-dessus; après votre si (!db.Les utilisateurs.()){}, Vous commencez à créer de nouveaux objets pour les classes d'affaires?
Vous pourriez l'appeler une routine différente de Semences() comme InitializeBusinessObjects(contexte); pour des choses comme les tables de recherche, etc. Vous pouvez également placer ce code dans la configuration de la migration des Semences() la méthode.
Aucune idée de comment le faire en EF?
OriginalL'auteur Steve Greene