:)
我有以下课程:
(为简洁省略了额外属性)
使用Fluent NHibernate以预期的方式映射这些类(在注释列表中使用反转)。现在我希望NHibernate在加载评论时加载评论的 Dislikes 集合的大小,但不加载整个集合。我非常想避免公式(yuk @ native sql),我更希望NHibernate只触发一个查询。这有可能吗?
我知道Extra Lazy功能,但据我所知,这会引发一个额外的查询,这对于数百条评论的列表来说并不是最佳的。
答案 0 :(得分:1)
这是一个常见的误解,你需要1个查询才能获得最佳性能。
每个连接都要求数据库执行其他工作,并且每次额外连接时查询的复杂性和成本都会快速增长。虽然关系数据库针对处理连接进行了优化,但执行多个单独的查询通常更有效,而不是单个查询中包含多个连接。
在你的情况下,我会做2个查询。
var dislikeCount = _session.Query<Comment>().Count(x=>x.Dislike);
var comments = _session.Query<Comment>().ToList();
ps:别忘了将它包装在一个事务中。