nHibernate collection lazy =“extra” - 为什么我们不使用它?

时间:2012-03-21 01:47:33

标签: nhibernate

我知道这个answer解释了lazy =“extra”的设置。

我的问题是,使用lazy =“extra”是否有任何相关费用?为什么我们不将lazy =“extra”设置为我们将其设置为“true”的每个实例?它似乎与“真实”相同但更好?

1 个答案:

答案 0 :(得分:4)

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

否则,您最终可能会执行超出必要的查询。

例如

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