5

新しい ASP.NET MVC 5 Preview がリリースされましたが、Users コンテキスト/テーブルを構成するにはどうすればよいですか?

MVC 4 では、独自の User クラスを使用し、WebSecurity の初期化をポイントします。次のようにします。

WebSecurity.InitializeDatabaseConnection(connectionString, "System.Data.SqlClient", userTableName, userIdColumn, userNameColumn, autoCreateTables);

Users クラスにプロパティを追加したいのですが、どうすればよいですか?

4

3 に答える 3

2

これで問題を解決できると思います:


Models \ IdentityModels.csでは、独自の User モデルを再定義できます。

public class ApplicationUser : IdentityUser
{
    /* identity field from database */
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }

    [Required]
    public bool Internal { get; set; }

    public string UserFullName { get; set; }

    public string UserEmail { get; set; }

    public ApplicationUser()
        : base()
    {
        Internal = false;
    }

    public ApplicationUser(string userName)
        : base(userName)
    {
        Internal = false;
    }

}

OnModelCreating()オーバーライドとToTable()メソッドを使用して、デフォルトの AspNet テーブルのマッピングを変更できるようになりました。

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        // Change the name of the table to be Users instead of AspNetUsers
        modelBuilder.Entity<IdentityUser>().ToTable("User");
        modelBuilder.Entity<ApplicationUser>().ToTable("User");

        modelBuilder.Entity<IdentityRole>().ToTable("Role");
        modelBuilder.Entity<IdentityUserClaim>().ToTable("User_Claim");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("User_Login");
        modelBuilder.Entity<IdentityUserRole>().ToTable("User_Role");
    }
}

最後に、データベースに次のテーブルが表示されます: AspNetUsers、AspNetRoles、AspNetUsersRoles、AspNetUsersClaims、AspNetUserLogins の代わりに、User、Role、User_Role、 User_Claim、User_Login。

もちろん、Userテーブルには追加のフィールドが含まれます: UserId (int ID)、InternalUserFullName、およびUserEmail

于 2015-02-01T14:20:14.700 に答える
1

https://github.com/rustd/AspnetIdentitySampleからサンプルをダウンロードできます。これは、 ASP.NET および Web Tools 2013 Preview Refreshに同梱されている ASP.NET MVC テンプレートに基づいています(英語版の VS2013 Preview のみをサポートします)。この Preview Refresh をインストールすると、ASP.NET Web フォームおよび Web ツールに対して同じことができます。 SPA アプリケーション。

このプロジェクトを実行する手順は次のとおりです

Open the solution
Build and run
Register a user ---- Notice that the user registration field only has user name and password
Let's ask for a birthdate option from the user while registering an account.
Goto Nuget Package Manager console and run "Enable-Migrations"
Goto Models\AppModel.cs and uncomment BirthDate property in the MyUser class
Goto Models\AccountViewModels.cs and uncomment BirthDate property in RegisterViewModel
Goto AccountController and in Register Action and have the following code var user = new MyUser() { UserName = model.UserName,BirthDate=model.BirthDate }; //var user = new MyUser() { UserName = model.UserName };
Goto Views\Account\Register.cshtml and uncomment the HTML markup to add a BirthDate column
Goto Nuget Package Manager console and run "Add-Migration BirthDate"
Goto Nuget Package Manager console and run "Update-Database"
Run the application
When you register a user then you can enter BirthDate as well
于 2013-07-04T18:20:35.210 に答える