如何删除EF多对多关系中的记录?

时间:2015-08-23 12:32:58

标签: entity-framework

我正在开发我的教程项目,我是实体框架的新手。

我有两个很多关系表我正在使用代码首先approuch。

enter image description here

这是表格定义:

StringBuilder

课程表包含3个科目:历史,数学,物理。

我需要删除与某些现有课程相关的学生。

知道如何实施它?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

using (var ctx = new MyContext())
{
    var student1 = ctx.Students.Find(1);
    if (student1 != null)
    {
        foreach (var item in student1.Courses.ToList())
            student1.Courses.Remove(item);
        ctx.SaveChanges();
    }
}

答案 1 :(得分:1)

假设我们希望从关系中删除与数学和历史课程相关的学生。

 var relatedStudents = context.Students.Include(x=>x.Courses)
      .Where(s=>s.Courses.Any(c=>c.CourseName == "Math" && c.CourseName == "History"))
      .ToList();
 var math = context.Courses.First(x=>x.CourseName = "Math");
 var history = context.Courses.First(x=>x.CourseName = "History");
 foreach(Student s in relatedStudents)
 {
     s.Courses.Remove(math);
     s.Courses.Remove(history);
 }
 context.SaveChanges();