如何从 ASP.NET 样板中的用户 table 中删除电子邮件和其他额外字段?
How can I remove email and other extra fields from User table in ASP.NET boilerplate?
我有一个 ASP.NET 样板项目,用户的 login/register 必须基于 OTP 代码。所以Usertable中有几个冗余字段,包括Email和IsEmailConfirmed。
我尝试不从 abpUser 继承我的用户,然后在我的从 AbpUserManager 继承的 UserManager 中出错。似乎一切都与 AbpUser 和 AbpUserBase 相关联。
我知道我可以覆盖 AbpUserManager 方法,并且可以为这些字段设置一些默认值。但是有没有一种干净的方法来摆脱这些字段?
您可以在 DbContext 的 OnModelCreating
方法中使用 Fluent API。
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<CustomUser>().Ignore(x => x.Email);
builder.Entity<CustomUser>().Ignore(x => x.EmailConfirmed);
}
这将导致这些字段无法映射。然而,它们仍然是您的 CustomUser
class 的一部分,因为它们是从 IdentityUser
继承的。请注意,这可能会破坏 UserManager
的某些方法(例如 FindByEmailAsync
)。
我有一个 ASP.NET 样板项目,用户的 login/register 必须基于 OTP 代码。所以Usertable中有几个冗余字段,包括Email和IsEmailConfirmed。
我尝试不从 abpUser 继承我的用户,然后在我的从 AbpUserManager 继承的 UserManager 中出错。似乎一切都与 AbpUser 和 AbpUserBase 相关联。
我知道我可以覆盖 AbpUserManager 方法,并且可以为这些字段设置一些默认值。但是有没有一种干净的方法来摆脱这些字段?
您可以在 DbContext 的 OnModelCreating
方法中使用 Fluent API。
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<CustomUser>().Ignore(x => x.Email);
builder.Entity<CustomUser>().Ignore(x => x.EmailConfirmed);
}
这将导致这些字段无法映射。然而,它们仍然是您的 CustomUser
class 的一部分,因为它们是从 IdentityUser
继承的。请注意,这可能会破坏 UserManager
的某些方法(例如 FindByEmailAsync
)。