2017-03-07 25 views

回答

3

一個.Take().Skip()是在DB端(如SQL Server上 - Implement paging (skip/take) functionality with this query)轉換成像這樣

SELECT col1, col2, ... 
FROM ... 
WHERE ... 
ORDER BY 
OFFSET  0 ROWS  -- skip 0 rows 
FETCH NEXT 25 ROWS ONLY; -- take 25 rows 

這將始終工作,如果我們query約一個表(沒有JOIN )。即許多行會導致在結果列表中

,許多C#項目,但如果查詢將使用JOIN,加入一些收集,我們仍然會得到DB側25行..

parent_id, child_id 
     1,  10  
     1,  11  
     2,  12  
     2,  13  
     ... 
     -- 25 rows 

但是這些會導致更少的根實體(請參閱父級1和2有4行)。這些將,轉化過程中,可以簡單地收集轉化的父母只是用很少的項目非常不確定的量

我的建議是:

需要分頁時不加入收藏。決不。始終頁面上的聯接與star schema(多到一個)

+1

感謝這個信息。 – NiZelooer

+1

祝你好運NHibernate,先生;) –

+0

我真的不明白你最後一次報價關於不分頁時加入集合。在我的應用程序中,我正在使用連接('JoinQueryOver')進行分頁,並沒有看到任何問題。其他人很棒。 +1 –

相關問題