2017-04-26 59 views
0

我尝试从我的数据库播种初始数据,但这种技术的信息非常差。寻求后许多选择,我觉得我可以如何在这个岗位实体框架具有Identity和ASP.NET核心的核心1.1种子

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

但用户说后ConfigureServices加服一样短暂,在配置调用这个服务发送的IdentityRole和IdentityUser inicial数据,该cuestion是怎么样?任何有想法?

问候

回答

3

射手,到种子数据在ASP.NET中的核心数据库,你应该先创建一个类,你可以调用这个DbInitializer,它应该是这个样子。

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"); 
     } 

    } 
} 

接下来,你应该在启动类的配置方法调用的DbInitializer类的InitializeAsync helper方法。像这样

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

而且应该做的伎俩