如何从 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)。