对于多对多关系,EF Core生成的join表可以通过以下步骤进行直接填写:
public class Student
{
public int StudentId { get; set; }
public string Name { get; set; }
public ICollection<StudentCourse> StudentCourses { get; set; }
}
public class Course
{
public int CourseId { get; set; }
public string Title { get; set; }
public ICollection<StudentCourse> StudentCourses { get; set; }
}
public class StudentCourse
{
public int StudentId { get; set; }
public Student Student { get; set; }
public int CourseId { get; set; }
public Course Course { get; set; }
}
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
public DbSet<Course> Courses { get; set; }
public DbSet<StudentCourse> StudentCourses { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<StudentCourse>()
.HasKey(sc => new { sc.StudentId, sc.CourseId });
modelBuilder.Entity<StudentCourse>()
.HasOne(sc => sc.Student)
.WithMany(s => s.StudentCourses)
.HasForeignKey(sc => sc.StudentId);
modelBuilder.Entity<StudentCourse>()
.HasOne(sc => sc.Course)
.WithMany(c => c.StudentCourses)
.HasForeignKey(sc => sc.CourseId);
}
}
using (var context = new SchoolContext())
{
var student = new Student { Name = "John" };
var course = new Course { Title = "Math" };
context.StudentCourses.Add(new StudentCourse { Student = student, Course = course });
context.SaveChanges();
}
在上述代码中,我们创建了一个新的Student和Course对象,并将它们添加到StudentCourses关联表中,从而建立了多对多关系。
总结: 对于多对多关系,EF Core生成的join表可以通过定义实体类和关联表,配置多对多关系和关联表的关系,以及直接操作关联表来进行填写。这样可以方便地管理多对多关系的数据。
领取专属 10元无门槛券
手把手带您无忧上云