私が思うに、これはあなたの問題を解決することができます:
モデルで
は、あなた自身のUserモデルを再定義することができます IdentityModels.csを\:
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;
}
}
今はデフォルトのマッピングを変更することができますを使用しているAspNetテーブルOnModelCreating()オーバーライドとToTable()メソッド:
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");
}
}
最後に、データベースを以下の表に表示されます。 ユーザー、役割、USER_ROLE、User_Claim、代わりにAspNetUsers、AspNetRoles、AspNetUsersRoles、AspNetUsersClaims、AspNetUserLoginsのUSER_LOGIN。 ユーザーID(int型の同一性)、内部、UserFullNameとUSEREMAIL:
もちろんユーザーテーブルには、追加のフィールドが含まれます。
私は本当に例を見たいと思います。私は自分自身を実装しようとしましたが、いくつかの主張のアイデンティティの問題で終わって、AntiFogeryTokenが失敗する原因となりました。自分のユーザークラスにMicrosoft.AspNet.Identity.IUserを使用すると発生します。 – Martin
@Hao Kung、私はトップダウンの例を見たいと思います。私はまた、 "MyUsers"の新しいテーブルを避けたい。この例でカスタムフィールドを持つロールを含めてください。 – KidCoke
@Hao Kung、あなたは例を挙げますか? – RezaRahmati