C# 使用实体框架和工作单元删除多对多

C# 使用实体框架和工作单元删除多对多,c#,asp.net-mvc,C#,Asp.net Mvc,我试图从他们以前的班级中获取学生科目列表,并首先删除它们,以便在提升学生到下一个班级时,我将获取班级科目,然后将它们添加到该学生中,但我所有的方法都不适用于我 这是学生模型 public class Student { public Student() { Subjects = new Collection<Subject>(); } // ... public virtual ICollection<Subject>

我试图从他们以前的班级中获取学生科目列表,并首先删除它们,以便在提升学生到下一个班级时,我将获取班级科目,然后将它们添加到该学生中,但我所有的方法都不适用于我

这是学生模型

public class Student
{
    public Student()
    {
        Subjects = new Collection<Subject>();
    }
    // ...
    public virtual ICollection<Subject> Subjects { get; set; }
}
这是没有响应的服务

public void RemoveSubject(int subjectId, int studentId)
{
    var student = UnitOfWork.Student.GetById(studentId);
    var subject = UnitOfWork.Subject.GetById(subjectId); 

    if (subject == null)
    {
        return;
    }

    student.Subjects.Remove(subject);
    UnitOfWork.Commit();
}
检查是否有任何东西,我是不允许它响应删除丢失。。。 添加可以很好地工作,但删除不能


我刚刚发现,当在服务中按Id获取学生以及所有属性时,主题计数为0,这就是为什么它无法删除它,因为主题属性中没有任何内容。请在按Id获取学生时如何包含主题。

我想您缺少类似的内容

更新学生

那你就做吧

工作单位。承诺


更新方法会将学生附加到您的ORM,或者执行您需要的任何操作

您知道在哪个阶段它不起作用吗?如果通过RemoveSubject方法一次执行一行,请检查以下内容。学生是否正确返回?如果是,是否正确设置了主题集合?是否返回主题?是的,使用断点逐行检查时,主题正确返回列表。。我发现当它击中student.subject.removesubject时有一个错误。我刚刚发现,当在服务中通过Id获取student以及所有属性时,科目计数为0,这就是它无法删除它的原因,因为科目属性中没有任何内容。请在获取学生Id时如何包含科目。
public void RemoveSubject(int subjectId, int studentId)
{
    var student = UnitOfWork.Student.GetById(studentId);
    var subject = UnitOfWork.Subject.GetById(subjectId); 

    if (subject == null)
    {
        return;
    }

    student.Subjects.Remove(subject);
    UnitOfWork.Commit();
}