@@ -19,7 +19,41 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
1919
2020 protected override void OnModelCreating ( ModelBuilder modelBuilder )
2121 {
22-
22+ #region CohortCourse
23+ // Composite key for CohortCourse
24+ modelBuilder . Entity < CohortCourse > ( )
25+ . HasKey ( cc => new { cc . CohortId , cc . CourseId } ) ;
26+
27+ modelBuilder . Entity < CohortCourseUser > ( )
28+ . HasKey ( ccu => new { ccu . CohortId , ccu . CourseId , ccu . UserId } ) ;
29+
30+ // Relationships
31+ modelBuilder . Entity < CohortCourse > ( )
32+ . HasOne ( cc => cc . Cohort )
33+ . WithMany ( c => c . CohortCourses )
34+ . HasForeignKey ( cc => cc . CohortId ) ;
35+
36+ modelBuilder . Entity < CohortCourse > ( )
37+ . HasOne ( cc => cc . Course )
38+ . WithMany ( c => c . CohortCourses )
39+ . HasForeignKey ( cc => cc . CourseId ) ;
40+
41+ modelBuilder . Entity < CohortCourseUser > ( )
42+ . HasOne ( ccu => ccu . Cohort )
43+ . WithMany ( ) // ← Specify the inverse navigation
44+ . HasForeignKey ( ccu => ccu . CohortId ) ;
45+
46+ modelBuilder . Entity < CohortCourseUser > ( )
47+ . HasOne ( ccu => ccu . Course )
48+ . WithMany ( ) // ← Specify the inverse navigation
49+ . HasForeignKey ( ccu => ccu . CourseId ) ;
50+
51+ modelBuilder . Entity < CohortCourseUser > ( )
52+ . HasOne ( ccu => ccu . User )
53+ . WithMany ( u => u . CohortCourseUsers ) // ← Specify the inverse navigation
54+ . HasForeignKey ( ccu => ccu . UserId ) ;
55+
56+ #endregion CohortCourse
2357
2458 modelBuilder . Entity < UserCohort > ( )
2559 . HasKey ( uc => new { uc . UserId , uc . CohortId } ) ;
@@ -29,45 +63,35 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
2963 . Property ( u => u . Role )
3064 . HasConversion < string > ( ) ;
3165
32-
33- //modelBuilder.Entity<User>()
34- // .HasMany(u => u.Post)
35- // .WithOne(p => p.User)
36- // .HasForeignKey(p => p.UserId)
37- // .OnDelete(DeleteBehavior.Cascade);
38-
3966 modelBuilder . Entity < Post > ( )
4067 . HasMany ( p => p . Comments )
4168 . WithOne ( c => c . Post )
4269 . HasForeignKey ( c => c . PostId )
4370 . OnDelete ( DeleteBehavior . Cascade ) ;
4471
45- //modelBuilder.Entity<UserCohort>()
46- // .HasKey(tc => new { tc.UserId, tc.CohortId });
47-
48- //modelBuilder.Entity<UserCohort>()
49- // .HasOne(tc => tc.User)
50- // .WithMany(u => u.TeacherCohorts)
51- // .HasForeignKey(tc => tc.UserId);
52-
53- //modelBuilder.Entity<UserCohort>()
54- // .HasOne(tc => tc.Cohort)
55- // .WithMany(c => c.TeacherCohorts)
56- // .HasForeignKey(tc => tc.CohortId);
57-
5872 // seed users
5973 PersonData personData = new PersonData ( ) ;
74+ // seed cohorts with courses
75+ CohortCourseData cohortCourseData = new CohortCourseData ( personData . Users ) ;
76+ // seed posts
6077 PostData postData = new PostData ( personData . Users ) ;
6178 PostCommentData postCommentData = new PostCommentData ( postData . Posts , personData . Users ) ;
6279 modelBuilder . Entity < User > ( ) . HasData ( personData . Users ) ;
6380 modelBuilder . Entity < Post > ( ) . HasData ( postData . Posts ) ;
6481 modelBuilder . Entity < PostComment > ( ) . HasData ( postCommentData . Comments ) ;
82+ modelBuilder . Entity < Course > ( ) . HasData ( cohortCourseData . Courses ) ;
83+ modelBuilder . Entity < Cohort > ( ) . HasData ( cohortCourseData . Cohorts ) ;
84+ modelBuilder . Entity < CohortCourse > ( ) . HasData ( cohortCourseData . CohortCourses ) ;
85+ modelBuilder . Entity < CohortCourseUser > ( ) . HasData ( cohortCourseData . CohortCourseUsers ) ;
6586
6687 }
6788 public DbSet < User > Users { get ; set ; }
6889 public DbSet < Post > Posts { get ; set ; }
6990 public DbSet < PostComment > PostComments { get ; set ; }
7091 public DbSet < Cohort > Cohorts { get ; set ; }
92+ public DbSet < Course > Courses { get ; set ; }
93+ public DbSet < CohortCourse > CohortCourses { get ; set ; }
94+ public DbSet < CohortCourseUser > CohortCourseUsers { get ; set ; }
7195 public DbSet < UserCohort > UserCohorts { get ; set ; }
7296 }
7397}
0 commit comments