我刚刚迁移到nhibernate 3并使用LINQ语法。我现在有以下代码:
IEnumerable<Team> team = Session.Query<Team>().Fetch(r=>r.Country);
所以它会进行前期连接(因为我需要每个记录的这些子对象。
它正在运行连接查询,但我在nhibernate探查器中将其拉出来,结果是它运行了两次查询(同样的查询)。
这是新版本的nhibernate中的错误还是我做错了什么?
此外,任何有关调试此方法的其他方法的建议,以了解发生这种情况的原因。
答案 0 :(得分:3)
它与Fetch或join无关。
您正在为团队分配IQueryable
。因此,每次枚举它(迭代,获取计数等)时,它都在执行查询。
为避免这种情况,请将.ToList()
附加到调用中,以便执行并转换为内存列表。