使用 ASP.NET Core Identity 时存储用户类型特定属性的最佳做法是什么?
What is the best practice for storing user type specific properties while using ASP.NET Core Identity?
我看过类似的posthere,但是,答案并不令我满意。
我的应用程序中有 2 种不同类型的用户。它们都有我需要存储在数据库中的不同属性。例如,我的 Student
用户类型有 StudentId
和 RegistedDate
字段,而 Instructor
用户类型有 Major
字段。
我可以使用身份验证机制。我创建了 Student
和 Instructor
角色,让我知道谁有权访问应用程序的哪一部分,我很擅长。
我也许可以将不同类型的公共属性(例如 Gender
放在扩展 IdentityUser
的 ApplicationUser
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; }
我看过类似的posthere,但是,答案并不令我满意。
我的应用程序中有 2 种不同类型的用户。它们都有我需要存储在数据库中的不同属性。例如,我的 Student
用户类型有 StudentId
和 RegistedDate
字段,而 Instructor
用户类型有 Major
字段。
我可以使用身份验证机制。我创建了 Student
和 Instructor
角色,让我知道谁有权访问应用程序的哪一部分,我很擅长。
我也许可以将不同类型的公共属性(例如 Gender
放在扩展 IdentityUser
的 ApplicationUser
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; }