在ASP.NET Core中,IdentityDbContext包含了用于管理用户身份验证和授权的实体。但是,有时我们需要在这些实体中添加自定义字段,以满足特定的业务需求。下面是一些添加自定义字段的示例代码:
public class ApplicationUser : IdentityUser { public string FirstName { get; set; } public string LastName { get; set; } }
public class ApplicationRole : IdentityRole { public string Description { get; set; } }
public class ApplicationUserRoles : IdentityUserRole
要在IdentityDbContext中使用这些自定义实体,我们需要将它们传递给DbContextOptionsBuilder。下面是一个示例:
public class ApplicationDbContext : IdentityDbContext
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity(b =>
{
b.Property(u => u.FirstName).HasMaxLength(50);
b.Property(u => u.LastName).HasMaxLength(50);
});
builder.Entity(b =>
{
b.Property(r => r.Description).HasMaxLength(100);
});
builder.Entity().Property(ur => ur.CreatedDate).HasDefaultValueSql("getdate()");
}
}
在这个例子中,我们将已添加自定义字段的实体传递给IdentityDbContext,并使用OnModelCreating方法对每个实体的属性进行配置。
最后,我们需要告诉ASP.NET Core使用我们的IdentityDbContext,可以在Startup.cs中的ConfigureServices方法中进行配置:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext
services.AddDefaultIdentity()
.AddRoles()
.AddEntityFrameworkStores