使用 ASP.NET Core Identity 时存储用户类型特定属性的最佳做法是什么?

What is the best practice for storing user type specific properties while using ASP.NET Core Identity?

我看过类似的posthere,但是,答案并不令我满意。

我的应用程序中有 2 种不同类型的用户。它们都有我需要存储在数据库中的不同属性。例如,我的 Student 用户类型有 StudentIdRegistedDate 字段,而 Instructor 用户类型有 Major 字段。

我可以使用身份验证机制。我创建了 StudentInstructor 角色,让我知道谁有权访问应用程序的哪一部分,我很擅长。

我也许可以将不同类型的公共属性(例如 Gender 放在扩展 IdentityUserApplicationUser class 中,但是,我不确定如何我应该存储特定于用户类型的信息。我应该为每种用户类型扩展一次 ApplicationUser class 并拥有一个巨大的 table 还是应该为具有 [=22= 的每种用户类型创建单独的 tables ] 中的ApplicationUser class 作为外键?还是我应该做一些完全不同的事情?

我相信很多人以前都遇到过并解决过这个问题。解决此问题的最佳做法是什么?

我认为您应该为 Student class 和 Instructor class 创建单独的表,并使用指向 ApplicationUser class.

的外键

假设您使用的是 EF Core,下面是一个示例:

public class Student 
{
     public int StudentId { get; set; }

     // EF Core automatically creates a Foreign Key for you
     public ApplicationUser ApplicationUser { get; set; }
}

 public class Instructor 
 {
      public int InstructorId { get; set; }

      // EF Core automatically creates a Foreign Key for you
      public ApplicationUser ApplicationUser { get; set; }
 }


In your ApplicationDbContext class:

public DbSet<ApplicationUser> AppUsers { get; set; }
public DbSet<Student> Students { get; set; }
public DbSet<Instructor> Instructors { get; set; }