consulta @NHibernate com critérios no membro da coleção filho retorna apenas a coleção filho parcial
Tenho uma relação pai-filho entreTeacher
eStudentReport
. CadaStudentReport
tem um registro de data e hora no campo quando o professor terminou o relatório. Tenho uma consulta para encontrar todos os professores que concluíram um ou mais de seus relatórios a partir de um certo número de minutos atrás:
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>();
}
Isto retorna a lista correta de professores, mas a coleção de crianças para cada professor contém apenas os relatórios que correspondem ao critério de seleção. Gostaria que a coleção de relatórios de cada professor correspondente contivesse todos os relatórios, não apenas os poucos que atendem aos critérios.
Existe alguma maneira de carregar a coleção filho completa ansiosamente ou omitir carregá-la nesta consulta e confiar no carregamento lent
Atualiza
Esta é a solução:
return Session.QueryOver<Teacher>()
.Fetch(t => t.StudentReports).Eager
.JoinQueryOver<StudentReport>(t => t.StudentReports)
.Where(r => r.FirstSaveTimestamp >= activityCutoff)
.TransformUsing(Transformers.DistinctRootEntity)
.List<Teacher>();