使用nhibernate LINQ语法时,为什么单个连接查询运行两次?

时间:2010-12-29 20:26:55

标签: c# linq nhibernate fluent-nhibernate

我刚刚迁移到nhibernate 3并使用LINQ语法。我现在有以下代码:

IEnumerable<Team> team = Session.Query<Team>().Fetch(r=>r.Country);

所以它会进行前期连接(因为我需要每个记录的这些子对象。

它正在运行连接查询,但我在nhibernate探查器中将其拉出来,结果是它运行了两次查询(同样的查询)。

这是新版本的nhibernate中的错误还是我做错了什么?

此外,任何有关调试此方法的其他方法的建议,以了解发生这种情况的原因。

1 个答案:

答案 0 :(得分:3)

它与Fetch或join无关。

您正在为团队分配IQueryable。因此,每次枚举它(迭代,获取计数等)时,它都在执行查询。

为避免这种情况,请将.ToList()附加到调用中,以便执行并转换为内存列表。