@@ -17,55 +17,73 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
1717
1818 protected override void OnModelCreating ( ModelBuilder modelBuilder )
1919 {
20-
21-
22- modelBuilder . Entity < UserCohort > ( )
23- . HasKey ( uc => new { uc . UserId , uc . CohortId } ) ;
24-
20+ #region CohortCourse
21+ // Composite key for CohortCourse
22+ modelBuilder . Entity < CohortCourse > ( )
23+ . HasKey ( cc => new { cc . CohortId , cc . CourseId } ) ;
24+
25+ modelBuilder . Entity < CohortCourseUser > ( )
26+ . HasKey ( ccu => new { ccu . CohortId , ccu . CourseId , ccu . UserId } ) ;
27+
28+ // Relationships
29+ modelBuilder . Entity < CohortCourse > ( )
30+ . HasOne ( cc => cc . Cohort )
31+ . WithMany ( c => c . CohortCourses )
32+ . HasForeignKey ( cc => cc . CohortId ) ;
33+
34+ modelBuilder . Entity < CohortCourse > ( )
35+ . HasOne ( cc => cc . Course )
36+ . WithMany ( c => c . CohortCourses )
37+ . HasForeignKey ( cc => cc . CourseId ) ;
38+
39+ modelBuilder . Entity < CohortCourseUser > ( )
40+ . HasOne ( ccu => ccu . Cohort )
41+ . WithMany ( ) // ← Specify the inverse navigation
42+ . HasForeignKey ( ccu => ccu . CohortId ) ;
43+
44+ modelBuilder . Entity < CohortCourseUser > ( )
45+ . HasOne ( ccu => ccu . Course )
46+ . WithMany ( ) // ← Specify the inverse navigation
47+ . HasForeignKey ( ccu => ccu . CourseId ) ;
48+
49+ modelBuilder . Entity < CohortCourseUser > ( )
50+ . HasOne ( ccu => ccu . User )
51+ . WithMany ( u => u . CohortCourseUsers ) // ← Specify the inverse navigation
52+ . HasForeignKey ( ccu => ccu . UserId ) ;
53+ #endregion CohortCourse
2554
2655 modelBuilder . Entity < User > ( )
2756 . Property ( u => u . Role )
2857 . HasConversion < string > ( ) ;
2958
30-
31- //modelBuilder.Entity<User>()
32- // .HasMany(u => u.Post)
33- // .WithOne(p => p.User)
34- // .HasForeignKey(p => p.UserId)
35- // .OnDelete(DeleteBehavior.Cascade);
36-
3759 modelBuilder . Entity < Post > ( )
3860 . HasMany ( p => p . Comments )
3961 . WithOne ( c => c . Post )
4062 . HasForeignKey ( c => c . PostId )
4163 . OnDelete ( DeleteBehavior . Cascade ) ;
4264
43- //modelBuilder.Entity<UserCohort>()
44- // .HasKey(tc => new { tc.UserId, tc.CohortId });
45-
46- //modelBuilder.Entity<UserCohort>()
47- // .HasOne(tc => tc.User)
48- // .WithMany(u => u.TeacherCohorts)
49- // .HasForeignKey(tc => tc.UserId);
50-
51- //modelBuilder.Entity<UserCohort>()
52- // .HasOne(tc => tc.Cohort)
53- // .WithMany(c => c.TeacherCohorts)
54- // .HasForeignKey(tc => tc.CohortId);
55-
5665 // seed users
5766 PersonData personData = new PersonData ( ) ;
67+ // seed cohorts with courses
68+ CohortCourseData cohortCourseData = new CohortCourseData ( personData . Users ) ;
69+ // seed posts
5870 PostData postData = new PostData ( personData . Users ) ;
5971 PostCommentData postCommentData = new PostCommentData ( postData . Posts , personData . Users ) ;
6072 modelBuilder . Entity < User > ( ) . HasData ( personData . Users ) ;
6173 modelBuilder . Entity < Post > ( ) . HasData ( postData . Posts ) ;
6274 modelBuilder . Entity < PostComment > ( ) . HasData ( postCommentData . Comments ) ;
75+ modelBuilder . Entity < Course > ( ) . HasData ( cohortCourseData . Courses ) ;
76+ modelBuilder . Entity < Cohort > ( ) . HasData ( cohortCourseData . Cohorts ) ;
77+ modelBuilder . Entity < CohortCourse > ( ) . HasData ( cohortCourseData . CohortCourses ) ;
78+ modelBuilder . Entity < CohortCourseUser > ( ) . HasData ( cohortCourseData . CohortCourseUsers ) ;
6379
6480 }
6581 public DbSet < User > Users { get ; set ; }
6682 public DbSet < Post > Posts { get ; set ; }
6783 public DbSet < PostComment > PostComments { get ; set ; }
6884 public DbSet < Cohort > Cohorts { get ; set ; }
69- public DbSet < UserCohort > UserCohorts { get ; set ; }
85+ public DbSet < Course > Courses { get ; set ; }
86+ public DbSet < CohortCourse > CohortCourses { get ; set ; }
87+ public DbSet < CohortCourseUser > CohortCourseUsers { get ; set ; }
7088 }
7189}
0 commit comments