删除C时A-B之间的链接也被删除

时间:2019-08-01 09:43:19

标签: c# entity-framework

这是我的数据模型:

考试:

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也将被无故删除。

您知道为什么会这样吗?有没有办法查看某处关系和删除背后的逻辑?

0 个答案:

没有答案