2017-04-26 19 views
0

私のデータベースから初期データをシードしようとしていますが、この技術の情報は実際には貧弱です。後に多くのオプションを求めて、私はどのようにアイデンティティとASP.NET Core 1.1コアを持つエンティティフレームワークコア

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

しかし、ユーザーの後の設定で、このサービスを呼び出す、ConfigureServicesに一時のようなサービスを追加し、cuestionがあると言うこの記事でIdentityRoleとIdentityUserためinicialデータを送信することができます見つけますどうやって?どんなアイデアがありますか?

よろしく

答えて

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ヘルパーメソッドを呼び出す必要があります。以下のようなので、

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

とは、それはトリックを行う必要があります

関連する問題