我一直在试图弄清楚为什么这个询问经理和他或她的团队的查询只返回团队集合的第一个条目。显然,这是因为我在查询末尾有 FirstOrDefault 。我的印象是 FirstOrDefault 将作为一个整体应用于查询,但似乎它也被应用于 Team 集合。
原始查询(仅显示团队中的第一个成员):
session.Query<IEmployee>()
.Where(p => p.PersonalNumber == PersonalNumber)
.Fetch(p => p.Team)
.Fetch(p => p.Manager)
.FirstOrDefault();
返回完整团队的新查询:
session.Query<IEmployee>()
.Where(p => p.PersonalNumber == PersonalNumber)
.Fetch(p => p.Team)
.Fetch(p => p.Manager)
.ToList().FirstOrDefault();
制定此查询的正确方法是什么?我需要解决方法意味着我没有正确执行此操作。
背景 - 映射:
这是一个基本的层次关系,Manager 是 IEmployee,Team 是 IEmployee 的 IList。
References(x => x.Manager).Column("ManagerId");
HasMany(x => x.Team)
.AsList(index => index.Column("TeamIndex"))
.KeyColumn("ManagerId");