Changeset 5e22720 for iknow-api/Data/AppDbContext.cs
- Timestamp:
- 10/30/25 17:22:08 (11 months ago)
- Branches:
- master
- Children:
- f0fc386
- Parents:
- 586825e
- File:
-
- 1 edited
-
iknow-api/Data/AppDbContext.cs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
iknow-api/Data/AppDbContext.cs
r586825e r5e22720 14 14 public DbSet<EnrollmentInfo> EnrollmentInfo { get; set; } 15 15 public DbSet<RefreshToken> RefreshToken { get; set; } 16 17 public DbSet<Subject> Subjects { get; set; } 18 public DbSet<DependencySubject> DependencySubjects { get; set; } 19 20 21 protected override void OnModelCreating(ModelBuilder modelBuilder) 22 { 23 base.OnModelCreating(modelBuilder); 24 25 // ------------------------- 26 // DependencySubject (self-referencing many-to-many) 27 // ------------------------- 28 modelBuilder.Entity<DependencySubject>() 29 .HasKey(ds => new { ds.SubjectId, ds.DependencyId }); 30 31 modelBuilder.Entity<DependencySubject>() 32 .HasOne(ds => ds.Subject) 33 .WithMany(s => s.Dependencies) 34 .HasForeignKey(ds => ds.SubjectId) 35 .OnDelete(DeleteBehavior.Restrict); 36 37 modelBuilder.Entity<DependencySubject>() 38 .HasOne(ds => ds.Dependency) 39 .WithMany(s => s.Dependents) 40 .HasForeignKey(ds => ds.DependencyId) 41 .OnDelete(DeleteBehavior.Restrict); 42 43 // ------------------------- 44 // MajorSubjects (many-to-many) 45 // ------------------------- 46 modelBuilder.Entity<MajorSubjects>() 47 .HasKey(ab => new { ab.MajorId, ab.SubjectId }); 48 49 modelBuilder.Entity<MajorSubjects>() 50 .HasOne(ab => ab.Majors) 51 .WithMany(a => a.Subjects) 52 .HasForeignKey(ab => ab.MajorId) 53 .OnDelete(DeleteBehavior.Cascade); 54 55 modelBuilder.Entity<MajorSubjects>() 56 .HasOne(ab => ab.Subjects) 57 .WithMany(b => b.Majors) 58 .HasForeignKey(ab => ab.SubjectId) 59 .OnDelete(DeleteBehavior.Cascade); 60 61 // ------------------------- 62 // UserDocuments (many-to-many) 63 // ------------------------- 64 modelBuilder.Entity<UserDocuments>() 65 .HasKey(ab => new { ab.UserId, ab.DocumentId }); 66 67 modelBuilder.Entity<UserDocuments>() 68 .HasOne(ab => ab.User) 69 .WithMany(a => a.Documents) 70 .HasForeignKey(ab => ab.UserId) 71 .OnDelete(DeleteBehavior.Cascade); 72 73 modelBuilder.Entity<UserDocuments>() 74 .HasOne(ab => ab.Documents) 75 .WithMany(b => b.User) 76 .HasForeignKey(ab => ab.DocumentId) 77 .OnDelete(DeleteBehavior.Cascade); 78 79 // ------------------------- 80 // Payment (user enrollment) 81 // ------------------------- 82 modelBuilder.Entity<Payment>() 83 .HasKey(ab => new { ab.UserId, ab.EnrollmentInfoId }); 84 85 modelBuilder.Entity<Payment>() 86 .HasOne(ab => ab.User) 87 .WithMany(a => a.EnrolledSemesters) 88 .HasForeignKey(ab => ab.UserId) 89 .OnDelete(DeleteBehavior.Cascade); 90 91 modelBuilder.Entity<Payment>() 92 .HasOne(ab => ab.EnrolledSemesters) 93 .WithMany(b => b.Users) 94 .HasForeignKey(ab => ab.EnrollmentInfoId) 95 .OnDelete(DeleteBehavior.Cascade); 96 97 // ------------------------- 98 // SemesterSubject (student enrollments and professor assignments) 99 // ------------------------- 100 modelBuilder.Entity<SemesterSubject>() 101 .HasKey(ss => ss.Id); // or composite key if you prefer {UserId, EnrolledSemesterId, SubjectId} 102 103 // Student enrollment 104 modelBuilder.Entity<SemesterSubject>() 105 .HasOne(ss => ss.User) 106 .WithMany(u => u.EnrolledSemesterUserSubjects) 107 .HasForeignKey(ss => ss.UserId) 108 .OnDelete(DeleteBehavior.Restrict); 109 110 // Professor teaching 111 modelBuilder.Entity<SemesterSubject>() 112 .HasOne(ss => ss.Professor) 113 .WithMany(u => u.TeachingSubjects) 114 .HasForeignKey(ss => ss.ProfessorId) 115 .OnDelete(DeleteBehavior.Restrict); 116 117 // Subject relation 118 modelBuilder.Entity<SemesterSubject>() 119 .HasOne(ss => ss.Subject) 120 .WithMany(s => s.SemesterSubjects) 121 .HasForeignKey(ss => ss.SubjectId) 122 .OnDelete(DeleteBehavior.Restrict); 123 124 // EnrolledSemester relation 125 modelBuilder.Entity<SemesterSubject>() 126 .HasOne(ss => ss.EnrolledSemester) 127 .WithMany(es => es.SemesterSubjects) 128 .HasForeignKey(ss => ss.EnrolledSemesterId) 129 .OnDelete(DeleteBehavior.Restrict); 130 } 131 16 132 } 17 133 }
Note:
See TracChangeset
for help on using the changeset viewer.
