私の MVC5 プロジェクトでは、次の実装でIdentityUser
クラスを拡張しました。DbContext
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection") { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityUser>()
.ToTable("Users");
modelBuilder.Entity<ApplicationUser>()
.ToTable("Users");
}
}
ApplicationUser
クラスの使用:
public class ApplicationUser : IdentityUser
{
public string EmailAddress { get; set; }
public string Name { get; set; }
public DateTime JoinDate { get; set; }
public string ConfirmationToken { get; set; }
public bool EmailIsConfirmed { get; set; }
}
ただし、同じことを実行してIdentityRole
クラスを拡張しようとすると、機能しません。ApplicationRole
から継承するクラスを作成する(そしてMVC プロジェクト内のIdentityRole
のすべてのインスタンスを に変更する) だけでは、データベースからロールが返されません。たとえば、次のように使用します。IdentityRole
ApplicationRole
RoleManager<ApplicationRole> RoleManager = new RoleManager<ApplicationRole>(new RoleStore<ApplicationRole>(new ApplicationDbContext()));
を呼び出すと、結果カウントは 0 になりますRoleManager.Roles
。
誰かがこれをまだ行っていて、何らかのガイダンスを提供できますか?
更新
DB Seed メソッドを新しいものを使用するように変更するのを忘れていましたApplicationRole
- まだ使用していIdentityRole
ました。その後、DBValidation エラーが発生し続けたため、データベースに更新を適用できませんでした。この投稿のコードの一部を適応させた後ValidateEntity
、DbContextのメソッドをオーバーライドすることですべてを機能させることができました