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