这是我的数据模型:
考试:
public class Exam
{
public int Id { get; set; }
public DateTime StartDate { get; set; }
public int TimeLimit { get; set; }
public User User { get; set; }
public List<Question> Questions { get; set; }
public QuestionSuite Suite { get; set; }
}
QuestionSuite
public class QuestionSuite
{
public int Id { get; set; }
public List<Question> Questions { get; set; }
public User Owner { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public int TimeLimit { get; set; }
}
问题
/* Some data*/
public virtual List<Exam> Exams { get; set; }
public virtual List<Result> Results { get; set; }
public virtual List<QuestionSuite> QuestionSuites { get; set; }
Question
代表一个简单的问题,包括答案和内容。 Exam
代表当前正在进行的检查,有用户在进行检查,有一些问题,可能是由QuestionSuite
创建的。最后,QuestionSuite
是一个定制的问题套件,任何用户都可以创建和共享。
参考太多的原因是我需要Exam
来记住套件,以便在考试结束时通知创建者,但是仍然需要记住这个问题,因为并非所有考试都是从套件中创建的
现在解决问题:考试结束后,我创建一个结果,如果考试已经进行了,通知套件创建者,然后使用以下代码删除Exam
对象:
public void DeleteExamByUserId(int userId)
{
//Context.Exams.RemoveRange(Context.Exams.Where<Exam>(exam => exam.User.Id == userId));
foreach(Exam e in Context.Exams)
{
if (e.User.Id == userId)
Context.Exams.Remove(e);
}
Context.SaveChanges();
}
EntityFramework
创建一个QuestionSuiteQuestions
表来链接问题和套件。删除考试后,QuestionSuiteQuestions
也将被无故删除。
您知道为什么会这样吗?有没有办法查看某处关系和删除背后的逻辑?