评教系统
This commit is contained in:
@@ -62,6 +62,10 @@ public sealed class AppDbContext(DbContextOptions<AppDbContext> options)
|
||||
public DbSet<CourseSubstitution> CourseSubstitutions => Set<CourseSubstitution>();
|
||||
public DbSet<WarningRule> WarningRules => Set<WarningRule>();
|
||||
public DbSet<WarningRecord> WarningRecords => Set<WarningRecord>();
|
||||
public DbSet<EvaluationSetup> EvaluationSetups => Set<EvaluationSetup>();
|
||||
public DbSet<EvaluationDimension> EvaluationDimensions => Set<EvaluationDimension>();
|
||||
public DbSet<EvaluationRecord> EvaluationRecords => Set<EvaluationRecord>();
|
||||
public DbSet<EvaluationScore> EvaluationScores => Set<EvaluationScore>();
|
||||
public DbSet<Notification> Notifications => Set<Notification>();
|
||||
public DbSet<StudentStatusChange> StudentStatusChanges =>
|
||||
Set<StudentStatusChange>();
|
||||
@@ -731,6 +735,43 @@ public sealed class AppDbContext(DbContextOptions<AppDbContext> options)
|
||||
.HasForeignKey(x => x.StudentId).OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
|
||||
// ── Evaluation ──
|
||||
builder.Entity<EvaluationSetup>(entity =>
|
||||
{
|
||||
entity.Property(x => x.Name).HasMaxLength(120);
|
||||
entity.HasIndex(x => new { x.AcademicTermId, x.Status });
|
||||
entity.HasOne(x => x.AcademicTerm).WithMany()
|
||||
.HasForeignKey(x => x.AcademicTermId).OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
|
||||
builder.Entity<EvaluationDimension>(entity =>
|
||||
{
|
||||
entity.Property(x => x.Name).HasMaxLength(60);
|
||||
entity.HasIndex(x => new { x.EvaluationSetupId, x.SortOrder });
|
||||
entity.HasOne(x => x.EvaluationSetup).WithMany(x => x.Dimensions)
|
||||
.HasForeignKey(x => x.EvaluationSetupId).OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
builder.Entity<EvaluationRecord>(entity =>
|
||||
{
|
||||
entity.HasIndex(x => new { x.EvaluationSetupId, x.StudentId, x.TeachingTaskId }).IsUnique();
|
||||
entity.HasOne(x => x.EvaluationSetup).WithMany(x => x.Records)
|
||||
.HasForeignKey(x => x.EvaluationSetupId).OnDelete(DeleteBehavior.Restrict);
|
||||
entity.HasOne(x => x.Student).WithMany()
|
||||
.HasForeignKey(x => x.StudentId).OnDelete(DeleteBehavior.Restrict);
|
||||
entity.HasOne(x => x.TeachingTask).WithMany()
|
||||
.HasForeignKey(x => x.TeachingTaskId).OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
|
||||
builder.Entity<EvaluationScore>(entity =>
|
||||
{
|
||||
entity.HasKey(x => new { x.EvaluationRecordId, x.EvaluationDimensionId });
|
||||
entity.HasOne(x => x.EvaluationRecord).WithMany(x => x.Scores)
|
||||
.HasForeignKey(x => x.EvaluationRecordId).OnDelete(DeleteBehavior.Cascade);
|
||||
entity.HasOne(x => x.EvaluationDimension).WithMany(x => x.Scores)
|
||||
.HasForeignKey(x => x.EvaluationDimensionId).OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
|
||||
builder.Entity<CourseSubstitution>(entity =>
|
||||
{
|
||||
entity.Property(x => x.Reason).HasMaxLength(500);
|
||||
|
||||
Reference in New Issue
Block a user