gpt4 book ai didi

带有子集合成员条件的 NHibernate 查询仅返回部分子集合

转载 作者:行者123 更新时间:2023-12-03 12:15:21 27 4
gpt4 key购买 nike

我在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>();
}

这将返回正确的教师列表,但每个教师的子集合仅包含符合选择标准的报告。我希望每个匹配教师的报告集包含所有报告,而不仅仅是符合标准的少数报告。

有什么方法可以急切地加载完整的子集合,或者在此查询中省略加载它并依靠延迟加载它?

更新

这是解决方案:
        return Session.QueryOver<Teacher>()
.Fetch(t => t.StudentReports).Eager
.JoinQueryOver<StudentReport>(t => t.StudentReports)
.Where(r => r.FirstSaveTimestamp >= activityCutoff)
.TransformUsing(Transformers.DistinctRootEntity)
.List<Teacher>();

最佳答案

使用获取

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

关于带有子集合成员条件的 NHibernate 查询仅返回部分子集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6193128/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com