struct&&assiQues
This commit is contained in:
@@ -8,14 +8,8 @@ namespace TechHelper.Context.Configuration
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<User> builder)
|
||||
{
|
||||
// 映射到表名:如果 User 类上没有 [Table("users")],默认是 "AspNetUsers"。
|
||||
// 显式指定可以确保你的数据库表名和你期望的一致。
|
||||
builder.ToTable("AspNetUsers");
|
||||
|
||||
// IdentityUser 的 Id 属性和其他标准属性(如 UserName, Email 等)
|
||||
// 大多由 IdentityDbContext 自动处理,通常不需要在这里显式配置主键或默认列。
|
||||
|
||||
// 配置自定义属性
|
||||
builder.Property(u => u.RefreshToken)
|
||||
.HasColumnName("refresh_token");
|
||||
|
||||
@@ -24,11 +18,8 @@ namespace TechHelper.Context.Configuration
|
||||
|
||||
builder.Property(u => u.IsDeleted)
|
||||
.HasColumnName("deleted")
|
||||
.HasDefaultValue(false); // 软删除标记,默认 false
|
||||
.HasDefaultValue(false);
|
||||
|
||||
// 配置导航属性 (User 作为关系的“一”或“主”方)
|
||||
|
||||
// User 作为老师,与 ClassTeacher 的关系 (一对多)
|
||||
builder.HasMany(u => u.TaughtClassesLink) // 一个 User (老师) 可以教授多个班级
|
||||
.WithOne(ct => ct.Teacher) // 一个 ClassTeacher 记录对应一个 Teacher
|
||||
.HasForeignKey(ct => ct.TeacherId) // 外键在 ClassTeacher.TeacherId
|
||||
@@ -43,20 +34,17 @@ namespace TechHelper.Context.Configuration
|
||||
// User 作为创建者,与 Question 的关系 (一对多)
|
||||
builder.HasMany(u => u.CreatedQuestions) // 一个 User 可以创建多个题目
|
||||
.WithOne(q => q.Creator) // 一个 Question 对应一个 Creator
|
||||
.HasForeignKey(q => q.CreatedBy) // 外键在 Question.CreatedBy
|
||||
.HasForeignKey(q => q.CreatorId) // 外键在 Question.CreatedBy
|
||||
.OnDelete(DeleteBehavior.Restrict); // 限制删除:如果创建者有题目,则不允许删除
|
||||
|
||||
// User 作为创建者,与 Assignment 的关系 (一对多)
|
||||
builder.HasMany(u => u.CreatedAssignments) // 一个 User 可以创建多个作业
|
||||
.WithOne(a => a.Creator) // 一个 Assignment 对应一个 Creator
|
||||
.HasForeignKey(a => a.CreatedBy) // 外键在 Assignment.CreatedBy
|
||||
.HasForeignKey(a => a.CreatorId) // 外键在 Assignment.CreatedBy
|
||||
.OnDelete(DeleteBehavior.Restrict); // 限制删除:如果创建者有作业,则不允许删除
|
||||
|
||||
// User 作为学生,与 SubmissionDetail 的关系 (一对多)
|
||||
// 尽管 SubmissionDetail 也可以通过 Submission 间接关联到 User,
|
||||
// 但这里提供了直接访问的导航属性,以方便直接查询学生的所有作答详情。
|
||||
builder.HasMany(u => u.SubmissionDetails) // 一个 User (学生) 可以有多个提交详情记录
|
||||
.WithOne(sd => sd.User) // 一个 SubmissionDetail 对应一个 User (学生)
|
||||
.WithOne(sd => sd.Student) // 一个 SubmissionDetail 对应一个 User (学生)
|
||||
.HasForeignKey(sd => sd.StudentId) // 外键在 SubmissionDetail.StudentId
|
||||
.OnDelete(DeleteBehavior.Restrict); // 限制删除:如果学生有提交详情,则不允许删除
|
||||
|
||||
@@ -69,7 +57,7 @@ namespace TechHelper.Context.Configuration
|
||||
// User 作为批改者,与 Submission 的关系 (一对多)
|
||||
builder.HasMany(u => u.GradedSubmissions) // 一个 User (批改者) 可以批改多个提交
|
||||
.WithOne(s => s.Grader) // 一个 Submission 对应一个 Grader
|
||||
.HasForeignKey(s => s.GradedBy) // 外键在 Submission.GradedBy
|
||||
.HasForeignKey(s => s.GraderId) // 外键在 Submission.GradedBy
|
||||
.OnDelete(DeleteBehavior.SetNull); // 因为 GradedBy 是可空的,所以批改者删除时,设为 NULL
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user