Запрос NHibernate с критериями для элемента дочерней коллекции возвращает только частичную дочернюю коллекцию

У меня есть родительско-дочерние отношения между Учителем и StudentReport . Каждый StudentReport имеет поле отметки времени, когда учитель закончил отчет. У меня есть запрос, чтобы найти всех учителей, которые заполнили один или несколько своих отчетов за определенное количество минут назад:

    public IList<Teacher> FindRecentlyActiveTeachers(int intervalMinutes)
    {
        if (intervalMinutes <= 0)
            throw new ArgumentException("Interval must be a positive number of minutes");

        DateTime activityCutoff = DateTime.Now.AddMinutes(-1 * intervalMinutes);

        return Session.QueryOver<Teacher>()
            .Left.JoinQueryOver<StudentReport>(t => t.StudentReports)
            .Where(r => r.FirstSaveTimestamp >= activityCutoff)
            .TransformUsing(Transformers.DistinctRootEntity)
            .List<Teacher>();
    }

Это возвращает правильный список учителей, но дочерняя коллекция для каждого учителя содержит только те отчеты, которые соответствуют критерий выбора. Я хотел бы, чтобы коллекция отчетов каждого подходящего учителя содержала все отчеты, а не только несколько отчетов, соответствующих критериям.

Есть ли способ загрузить полную дочернюю коллекцию с нетерпением или не загружать ее в эту запроса и полагаться на ленивую загрузку?

Обновление

Это решение:

        return Session.QueryOver<Teacher>()
            .Fetch(t => t.StudentReports).Eager
            .JoinQueryOver<StudentReport>(t => t.StudentReports)
            .Where(r => r.FirstSaveTimestamp >= activityCutoff)
            .TransformUsing(Transformers.DistinctRootEntity)
            .List<Teacher>();
6
задан Carl Raymond 31 May 2011 в 21:24
поделиться