在过去的两天内,我一直在尝试获取ApiAuthorizationDbContext来设置自定义IdentityRole。使用IdentityDbContext可以按以下步骤完成:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid>
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
在blazor项目模板中,ApplicationDbContext的声明如下:
public class ApplicationDbContext : ApiAuthorizationDbContext<ApplicationUser>
{
public ApplicationDbContext(
DbContextOptions options,
IOptions<OperationalStoreOptions> operationalStoreOptions) : base(options, operationalStoreOptions)
{
}
}
我该如何使用ApiAuthorizationDbContext做类似的事情。我在ApiAuthorizationDbContext类中找不到这种支持。
谢谢。
我没有找到自定义角色类的方法,但是我找到了解决问题的方法,并向现有的IdentityRole类添加属性,并且可以回答我的问题,以防万一其他人需要做类似的事情。解决此问题的方法是阴影属性。
例如,如果我想为IdentityRole类创建DateTime属性,则可以在DBContext类中使用以下代码。
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<IdentityRole>().Property<DateTime>("LastUpdated");
base.OnModelCreating(builder);
}
现在我们可以像这样访问属性:
context.Entry(myRole).Property("LastUpdated").CurrentValue = DateTime.Now;
这不像拥有自定义类那样容易,但是至少它使我有机会拥有IdentityRole类的自定义属性。