优化考试排考
This commit is contained in:
@@ -61,6 +61,11 @@ public sealed class AppDbContext(DbContextOptions<AppDbContext> options)
|
||||
public DbSet<ExamSession> ExamSessions => Set<ExamSession>();
|
||||
public DbSet<ExamSessionInvigilator> ExamSessionInvigilators =>
|
||||
Set<ExamSessionInvigilator>();
|
||||
public DbSet<ExamRoomAssignment> ExamRooms => Set<ExamRoomAssignment>();
|
||||
public DbSet<ExamRoomSession> ExamRoomSessions => Set<ExamRoomSession>();
|
||||
public DbSet<ExamSeatAssignment> ExamSeats => Set<ExamSeatAssignment>();
|
||||
public DbSet<ExamRoomInvigilator> ExamRoomInvigilators =>
|
||||
Set<ExamRoomInvigilator>();
|
||||
public DbSet<MakeupExamPlan> MakeupExamPlans => Set<MakeupExamPlan>();
|
||||
public DbSet<MakeupExamSession> MakeupExamSessions => Set<MakeupExamSession>();
|
||||
public DbSet<MakeupExamSessionInvigilator> MakeupExamSessionInvigilators =>
|
||||
@@ -719,6 +724,65 @@ public sealed class AppDbContext(DbContextOptions<AppDbContext> options)
|
||||
entity.HasOne(x => x.Teacher).WithMany()
|
||||
.HasForeignKey(x => x.TeacherId).OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
builder.Entity<ExamRoomAssignment>(entity =>
|
||||
{
|
||||
entity.ToTable("ExamRooms");
|
||||
entity.HasIndex(x => new { x.ExamPlanId, x.StartsAt })
|
||||
.HasDatabaseName("IX_ExamRooms_Plan_Time");
|
||||
entity.HasIndex(x => new
|
||||
{
|
||||
x.ExamPlanId,
|
||||
x.ClassroomId,
|
||||
x.StartsAt
|
||||
})
|
||||
.HasDatabaseName("IX_ExamRooms_Plan_Room_Time");
|
||||
entity.HasIndex(x => x.CourseId)
|
||||
.HasDatabaseName("IX_ExamRooms_CourseId");
|
||||
entity.HasOne(x => x.ExamPlan).WithMany(x => x.Rooms)
|
||||
.HasForeignKey(x => x.ExamPlanId).OnDelete(DeleteBehavior.Cascade);
|
||||
entity.HasOne(x => x.Course).WithMany()
|
||||
.HasForeignKey(x => x.CourseId).OnDelete(DeleteBehavior.Restrict);
|
||||
entity.HasOne(x => x.Classroom).WithMany()
|
||||
.HasForeignKey(x => x.ClassroomId).OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
builder.Entity<ExamRoomSession>(entity =>
|
||||
{
|
||||
entity.ToTable("ExamRoomSessions");
|
||||
entity.HasKey(x => new { x.ExamRoomId, x.ExamSessionId });
|
||||
entity.HasIndex(x => x.ExamSessionId)
|
||||
.HasDatabaseName("IX_ExamRoomSessions_SessionId");
|
||||
entity.HasOne(x => x.ExamRoom).WithMany(x => x.SessionLinks)
|
||||
.HasForeignKey(x => x.ExamRoomId).OnDelete(DeleteBehavior.Cascade);
|
||||
entity.HasOne(x => x.ExamSession).WithMany(x => x.RoomLinks)
|
||||
.HasForeignKey(x => x.ExamSessionId).OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
builder.Entity<ExamSeatAssignment>(entity =>
|
||||
{
|
||||
entity.ToTable("ExamSeats");
|
||||
entity.HasKey(x => new { x.ExamRoomId, x.StudentId });
|
||||
entity.HasIndex(x => new { x.ExamSessionId, x.StudentId })
|
||||
.IsUnique()
|
||||
.HasDatabaseName("UX_ExamSeats_Session_Student");
|
||||
entity.HasIndex(x => x.StudentId)
|
||||
.HasDatabaseName("IX_ExamSeats_StudentId");
|
||||
entity.HasOne(x => x.ExamRoom).WithMany(x => x.Seats)
|
||||
.HasForeignKey(x => x.ExamRoomId).OnDelete(DeleteBehavior.Cascade);
|
||||
entity.HasOne(x => x.ExamSession).WithMany(x => x.SeatAssignments)
|
||||
.HasForeignKey(x => x.ExamSessionId).OnDelete(DeleteBehavior.Restrict);
|
||||
entity.HasOne(x => x.Student).WithMany()
|
||||
.HasForeignKey(x => x.StudentId).OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
builder.Entity<ExamRoomInvigilator>(entity =>
|
||||
{
|
||||
entity.ToTable("ExamRoomInvigilators");
|
||||
entity.HasKey(x => new { x.ExamRoomId, x.TeacherId });
|
||||
entity.HasIndex(x => x.TeacherId)
|
||||
.HasDatabaseName("IX_ExamRoomInvigilators_TeacherId");
|
||||
entity.HasOne(x => x.ExamRoom).WithMany(x => x.Invigilators)
|
||||
.HasForeignKey(x => x.ExamRoomId).OnDelete(DeleteBehavior.Cascade);
|
||||
entity.HasOne(x => x.Teacher).WithMany()
|
||||
.HasForeignKey(x => x.TeacherId).OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
builder.Entity<MakeupExamPlan>(entity =>
|
||||
{
|
||||
entity.Property(x => x.Name).HasMaxLength(120);
|
||||
|
||||
Reference in New Issue
Block a user