98

私は新しい MVC 5 で遊んでいます。コード ファースト マイグレーションを使用していくつかのモデル、コントローラー、およびビューをセットアップしています。

私の質問は、ユーザーとロールをどのようにシードするのですか? 現在、Configuration.cs の Seed メソッドでいくつかの参照データをシードしています。しかし、何かが最初に AccountController にヒットするまで、ユーザー テーブルとロール テーブルは作成されないように見えます。

現在、2 つの接続文字列があるため、データを認証から別のデータベースに分離できます。

ユーザー、ロールなどのテーブルを他のテーブルと一緒に入力するにはどうすればよいですか? アカウントコントローラーがヒットしたときではありませんか?

4

7 に答える 7

15

これは Valin の回答に基づく私のメソッドです。db にロールを追加し、ユーザーのパスワードを追加しました。このコードはSeed()、Migrations>Configurations.cs のメソッドに配置されます。

// role (Const.getRoles() return string[] whit all roles)

    var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
    for (int i = 0; i < Const.getRoles().Length; i++)
    {
        if (RoleManager.RoleExists(Const.getRoles()[i]) == false)
        {
            RoleManager.Create(new IdentityRole(Const.getRoles()[i]));
        }
    }

// user

    var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
    var PasswordHash = new PasswordHasher();
    if (!context.Users.Any(u => u.UserName == "admin@admin.net"))
    {
        var user = new ApplicationUser
        {
             UserName = "admin@admin.net",
             Email = "admin@admin.net",
             PasswordHash = PasswordHash.HashPassword("123456")
         };

         UserManager.Create(user);
         UserManager.AddToRole(user.Id, Const.getRoles()[0]);
    }
于 2015-07-06T11:54:47.110 に答える