2012-03-21 98 views

回答

4

我能想到的唯一情况是,如果一个集合主要用作数据源或循环迭代,那么首次访问任何属性(甚至是Count)时获取完整集合会更好。

否则,您可能会最终执行更多查询而不是必要的。

例如

bool found = false; 
int pos = 0; 
while (!found && pos < Collection.Count) 
{ 
    if (MyFunction(Collection[pos])) 
    { 
     found = true; 
    } 
    pos++; 
} 
+0

是的,这是有道理的,所以当你有一个肯定会一个电话.Count中后使用的集合,然后你会设置为lazy =“真”之前保存的计数的SQL查询使用它。 我仍然认为这样做的成本远低于潜在成本。所以不是默认的做法是总是设置lazy =“extra”,并且只有在你知道你会需要该集合的情况下,为这些情况设置lazy =“true”? – syclee 2012-03-22 01:02:22

+0

我想说它将取决于集合的大小。如果它很大,我认为值得使用lazy = extra,因为与构建整个集合相比,count操作的代价是微不足道的。还没有找到NH引用,但Hibernate文档说,循环中的每个项目访问都会生成一个查询(根据需要加载项目) – 2012-03-22 12:37:20

相关问题