Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C如何使用实体框架删除两个实体之间的引用?_C#_Entity Framework - Fatal编程技术网

C# C如何使用实体框架删除两个实体之间的引用?

C# C如何使用实体框架删除两个实体之间的引用?,c#,entity-framework,C#,Entity Framework,我有模型: 学生=。。。列出课程列表; 课程=。。。学生名单; 我将学生添加到几个不同的课程中,并使用实体框架将所有内容添加到数据库中 请使用EF帮助我将学生从特定课程中删除。显示您的模型和代码以获得帮助非常有帮助。我将根据您的伪代码尝试一下: var course = context.Courses.Include(c => c.Students) .SingleOrDefault(c => c.CourseID == selectedCourseId); if (cou

我有模型:

学生=。。。列出课程列表; 课程=。。。学生名单; 我将学生添加到几个不同的课程中,并使用实体框架将所有内容添加到数据库中


请使用EF帮助我将学生从特定课程中删除。显示您的模型和代码以获得帮助非常有帮助。我将根据您的伪代码尝试一下:

var course = context.Courses.Include(c => c.Students)
    .SingleOrDefault(c => c.CourseID == selectedCourseId);

if (course != null)
{
    var studentToRemove = course.Students.SingleOrDefault(s => c.StudentID == selectedStudentId);
    if (studentToRemove != null)
    {
        course.Students.Remove(studentToRemove);
        context.SaveChanges();
    }
}

这取决于您是否配置了或

我认为每个学生都可以参加零或更多的课程,而且每门课程都可以由零或更多的学生参加:一种多对多的关系

其配置如下所示:

class Student
{
   public int Id {get; set;}
   // a Student attends zero or more courses:
   public virtual ICollection<Course> Courses {get; set;}
}
class Course
{
   public int Id {get; set;}
   // a Course is attended by zero or more Students:
   public virtual ICollection<Student> Students{get; set;}
}
class MyDbContext : DbConter
{
    public DbSet<Student> Students {get; set;}
    public DbSet<Course> Courses {get; set;}
}

仅此而已。实体框架将从学生表中删除该学生,并自动确保在任何课程列表中都找不到该学生。你不必做一些内部连接。实体框架知道这是一种多对多关系,并将为您进行正确的内部连接

谢谢!:对不起,我对我的问题解释得不好,我当时正在打电话,而且很匆忙,这种情况再也不会发生了!:
using (var dbContext = new MyDbContext())
{
    Student studentToRemove = ... 
    // for example:
    Student studentToRemove = dbContext.Students
         .Where(student => student.Name == "John Doe")
         .FirstOrDefault();
    if (studentToRemove != null)
    {
        dbContext.Students.Remove(studentToRemove);
        dbConext.SaveChanges();
    }
}