2012-03-21 18 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

相關問題