2017-04-26 7 views
0

Ich versuche, erste Daten aus meiner Datenbank, aber die Informationen für diese Technologie ist wirklich arm. Nach vielen Möglichkeiten suchen, finde ich, ich kann, wie in diesem BeitragEntity Framework Core mit Identität und ASP.NET Core 1.1 Seeding

Entity framework Core with Identity and ASP.NET Core RC2 not creating user in database

Aber der Benutzer sagen, nachdem hinzufügen Dienst wie Transient in ConfigureServices, rufen Sie in Configure diesen Dienst inicial Daten für IdentityRole und IdentityUser senden, die cuestion ist Wie? Irgendwelche Idee?

Grüße

Antwort

3

Archer, um Daten an eine Datenbank in ASP.NET Kern Samen Sie zuerst eine Klasse erstellen, sollten Sie diese DbInitializer nennen könnte, und es sollte in etwa so aussehen.

public static class DbInitializer 
{ 
    public async static void InitializeAync(ApplicationDbContext context, UserManager<ApplicationUser> userManager, RoleManager<IdentityRole> roleManager) 
    { 
     context.Database.EnsureCreated(); 

     // check if any users exist. 
     if (context.Users.Any()) 
     { 
      return; // exit method, Database has been seeded 
     } 

     string[] roleNames = {"Admin", "Member" }; 
     IdentityResult roleResult; 
     // loop through roleNames Array 
     foreach (var roleName in roleNames) 
     { 
      var roleExist = await RoleManager.RoleExistsAsync(roleName); 
      //check if role exists 
      if (!roleExist) 
      { 
       // create new role 
       roleResult = await RoleManager.CreateAsync(new IdentityRole(roleName)); 
      } 
     } 

     //create an array of users 
     var users = new ApplicationUser[]; 
     { 
      new ApplicationUser 
      { 
       FirstName = "John", 
       LastName = "doe", 
       UserName = "johndoe", 
       Email = "[email protected]", 
      }; 

      new ApplicationUser 
      { 
       FirstName = "James", 
       LastName = "doe", 
       UserName = "jamesdoe", 
       Email = "[email protected]", 
      }; 
     } 

     //loop through users array 
     foreach (ApplicationUser _user in users) 
     { 
      // create user 
      await userManager.CreateAsync(_user, "pa$$w0rd"); 
      //add user to "Member" role 
      await UserManager.AddToRoleAsync(_user, "Member"); 
     } 

    } 
} 

Als nächstes sollten Sie Ihre InitializeAsync Helfer-Methode in der DbInitializer Klasse aus dem Configure-Methode in der Startup-Klasse aufrufen. wie so

public async void Configure(ApplicationDbContext context, UserManager<ApplicationUser> userManager, RoleManager<IdentityRole> roleManager) 
{ 
     DbInitializer.InitializeAync(context, userManager); 
} 

und das sollte den Trick tun

Verwandte Themen