从 Entity Framework 的多对多关系中选择数据

Selecting data from a many-to-many relation with Entity Framework

我有一个 Code First EF 设置,在两个 class 测验和问题之间存在多对多关系。它们看起来像这样:

public partial class Quiz
{
    public Quiz()
    {
        Questionnaire = new HashSet<Question>();
    }

    [Key]
    public int Id { get; set; }

    [Required]
    public string Naam { get; set; }

    public ICollection<Question> Questionnaire{ get; set; }
}

public partial class Question
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Question()
    {
        Quizzes = new HashSet<Quiz>();
        Answers = new HashSet<Answer>();
    }

    [Key]
    public int Id { get; set; }

    [Column(TypeName = "ntext")]
    [Required]
    public string Content { get; set; }

    public int CategoryId { get; set; }

    public virtual ICollection<Quiz> Quizzes { get; set; }

    public virtual ICollection<Answer> Answers { get; set; }

    public virtual Category Category { get; set; }
}

我已经在我的数据库中确认 EF 正确设置了链接 table QuizQuestions,并且种子数据似乎也正确填写。

现在,问题来了。我有一个 ViewModel class 试图读取数据库中的所有测验并添加链接到每个测验的问题数量。问题是,"Questionnaire" 属性 没有被填满,我不明白为什么。 ViewModel 使用以下代码:

using (var context = new KwisContext())
        {
            var quizzes = context.Quizzes.ToList().Select(q => new QuizVM(q));
            Quizzes = new ObservableCollection<QuizVM>(quizzes);
        }

QuizVM 看起来像这样:

public class QuizVM
{
    private Quiz _q;

    public QuizVM(Quiz q)
    {
        _q = q;
    }

    public string Naam
    {
        get { return _q.Naam; }
    }

    public int QuestionCount
    {
        get {
            return _q.Questionnaire.Count;
        }
    }
}

我已经将我的代码与试图做类似事情的人进行了比较(这是为了大学),但它适用于他的代码而不适用于我的代码,我终究看不出我们的方法有什么不同.我在 Entity Framework 中是否有什么东西可能会导致失败?

编辑: 我忘了提到我已经尝试了相同的代码,但是从另一端开始,即请求数据库中的每个问题并计算它们所属的测验数量。我用与上面相同的代码编写了这个,这确实有效。

明确使用Include获取链接数据

context.Quizzes.Include(x=>x.Questionnaire).ThenInclude(x=>x.OthersThatYouNeed)......