Nat*_*n A 2 asp.net-mvc entity-framework asp.net-mvc-5 asp.net-identity
我希望能够扩展IdentityRole的默认实现以包括描述等字段.为IdentityUser执行此操作非常简单,因为IdentityDbContext采用IdentityUser类型的通用参数.但是,IdentityDbContext不允许您为IdentityRole执行此操作.我怎么能做到这一点?
我知道我可以创建一个基本的DbContext,并实现我自己的IUserStore,这样我就可以使用自己的角色类,但我真的不想这样做.
有什么想法吗?
Spe*_*pin 10
我自己刚刚经历过这种痛苦.事实证明它非常简单.只需使用您的新属性扩展IdentityRole即可.
public class ApplicationRole : IdentityRole
{
public ApplicationRole(string name)
: base(name)
{ }
public ApplicationRole()
{ }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后你需要添加该行
new public DbSet<ApplicationRole> Roles { get; set; }
Run Code Online (Sandbox Code Playgroud)
像这样进入你的ApplicationDbContext类,否则你会得到错误.
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection")
{}
new public DbSet<ApplicationRole> Roles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这就是我需要做的一切.确保将IdentityRole的所有实例更改为ApplicationRole,包括您正在播种的任何内容.另外,不要忘记发出"更新数据库"以将更改应用于您的数据库.除非将"ApplicationRole"设置为鉴别器,否则新的RoleManager将不会看到其中的任何现有行.您可以自己轻松添加.
HTH
埃里克
| 归档时间: |
|
| 查看次数: |
4735 次 |
| 最近记录: |