我Teacher
和之间有亲子关系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>();
}
Run Code Online (Sandbox Code Playgroud)
这将返回正确的教师列表,但每位教师的子集合仅包含与选择条件匹配的报告.我希望每个匹配教师的报告集合包含所有报告,而不仅仅是符合条件的少数报告.
有没有什么方法可以热切地加载完整的子集合,或者省略在此查询中加载它并依赖于延迟加载它?
更新
这是解决方案:
return Session.QueryOver<Teacher>()
.Fetch(t => t.StudentReports).Eager
.JoinQueryOver<StudentReport>(t => t.StudentReports)
.Where(r => r.FirstSaveTimestamp >= activityCutoff)
.TransformUsing(Transformers.DistinctRootEntity)
.List<Teacher>();
Run Code Online (Sandbox Code Playgroud)
使用获取
return Session.QueryOver<Teacher>()
.Fetch(t => t.StudentReports)
.Where(r => r.FirstSaveTimestamp >= activityCutoff)
.TransformUsing(Transformers.DistinctRootEntity)
.List<Teacher>();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2522 次 |
最近记录: |