【发布时间】:2021-07-25 00:35:47
【问题描述】:
我几乎是 ASP.NET 的新手,我有一个关于它的问题。
我创建了一个项目 - 带有 Razor Pages 的 Web 应用程序,我进行了依赖注入并进行了一些迁移。我有一些班级,例如学生、教师和管理员。我正在使用身份和代码优先。
我的问题是: 我有很多用户,但对于我的数据库来说,所有这些用户只有一张表。我给他们一些角色,在一个表中我有 UserId 和 RoleId,这意味着他们有连接。
用户表:
CREATE TABLE [dbo].[AspNetUsers] (
[Id] NVARCHAR (450) NOT NULL,
[UserName] NVARCHAR (256) NULL,
[NormalizedUserName] NVARCHAR (256) NULL,
[Email] NVARCHAR (256) NULL,
[NormalizedEmail] NVARCHAR (256) NULL,
[EmailConfirmed] BIT NOT NULL,
[PasswordHash] NVARCHAR (MAX) NOT NULL,
[SecurityStamp] NVARCHAR (MAX) NULL,
[ConcurrencyStamp] NVARCHAR (MAX) NULL,
[PhoneNumber] NVARCHAR (MAX) NULL,
[PhoneNumberConfirmed] BIT NOT NULL,
[TwoFactorEnabled] BIT NOT NULL,
[LockoutEnd] DATETIMEOFFSET (7) NULL,
[LockoutEnabled] BIT NOT NULL,
[AccessFailedCount] INT NOT NULL,
[AreaCodeAndTown] NVARCHAR (100) NULL,
[Discriminator] NVARCHAR (MAX) DEFAULT (N'') NOT NULL,
[Name] NVARCHAR (50) NULL,
[RoadNameAndNumber] NVARCHAR (100) NULL,
[StudentUser_Name] NVARCHAR (50) NULL,
[TeacherUser_AreaCodeAndTown] NVARCHAR (100) NULL,
[TeacherUser_Name] NVARCHAR (50) NULL,
[TeacherUser_RoadNameAndNumber] NVARCHAR (100) NULL,
CONSTRAINT [PK_AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC)
);
学生班:
public class StudentUser : IdentityUser
{
[Required]
[MaxLength(50)]
public string Name { get; set; }
[Required]
[DataType(DataType.Password)]
[NotMapped] //ignore
public string Password { get; set; }
[DataType(DataType.Password)]
[Compare(nameof(Password))]
[NotMapped] //ignore
public string ConfirmPassword { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
教师班:
public class TeacherUser : IdentityUser
{
[Required]
[MaxLength(50)]
public string Name { get; set; }
[MaxLength(100)]
public string RoadNameAndNumber { get; set; }
[MaxLength(100)]
public string AreaCodeAndTown { get; set; }
[Required]
[DataType(DataType.Password)]
[NotMapped] //ignore
public string Password { get; set; }
[DataType(DataType.Password)]
[Compare(nameof(Password))]
[NotMapped] //ignore
public string ConfirmPassword { get; set; }
}
ApplicationDbContext:
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{}
public DbSet<AdminUser> AdminUsers { get; set; }
public DbSet<StudentUser> StudentUsers { get; set; }
public DbSet<TeacherUser> TeacherUsers { get; set; }
public DbSet<Course> Courses { get; set; }
public DbSet<Test> Tests { get; set; }
}
问题: 如何从“用户”表中准确获取教师或学生?我在谷歌搜索,但几乎所有关于 MVC 的信息,而不是关于 Razor Pages。
提前谢谢你!
【问题讨论】:
-
首先,我希望您为 MVC 找到的大部分内容都与 Razor Pages 相关。但是你的桌子设计有问题。您不应将教师和学生的详细信息都放在用户表中。
-
那我该怎么处理它们?用教师和学生创建新表,但他们是用户,我该如何处理?
标签: c# asp.net razor-pages identity