所以请遵循以下示例:
我有一个学生班:
public class Student
{
public Student() { }
public int StudentId { get; set; }
public string StudentName { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
和课程课程
public class Course
{
public Course()
{
this.Students = new HashSet<Student>();
}
public int CourseId { get; set; }
public string CourseName { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
他们有多对多的关系,这种配置是这样的:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>().HasMany<Course>(s => s.Courses).WithMany(c => c.Students).Map(c =>
{
c.MapLeftKey("Student_id");
c.MapRightKey("Course_id");
c.ToTable("StudentAndCourse");
});
base.OnModelCreating(modelBuilder);
}
我自己创建了模型和表格并映射到它们。到现在为止还挺好。问题是我不需要收集相关学生到我的课程。换句话说,当我上课时,他们会和相关的学生一起来。我需要有指定课程的学生,但是当我通过我的回购获得课程时,我只需要它们。
我尝试从Course类中删除Students集合,但是可以修复映射。我对EF没有经验,对工作实例的任何帮助将不胜感激。
答案 0 :(得分:2)
有WithMany()
方法,不需要相关实体的导航属性:
modelBuilder.Entity<Student>()
.HasMany(s => s.Courses)
.WithMany()
.Map(c =>
{
c.MapLeftKey("Student_id");
c.MapRightKey("Course_id");
c.ToTable("StudentAndCourse");
});