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();
}
}