2010-05-31 6 views
1

CastleProject ActiveRecord가 페이징을 지원합니까? 지금은 화면에 표시된 데이터 만로드해야합니다. [HasMany]를 사용하면 즉시 또는 첫 번째 호출에서 (지연 속성이 true 인 경우) 전체적으로로드됩니다. 그러나 나는 단지 100 개의 레코드 (100 개의 다음 레코드)와 같은 것을 필요로한다.ActiveRecord의 페이징

또 다른 질문은 100 개 항목을로드하는 방법입니다. 컬렉션이 너무 크면 계속해서 더 많은 항목을로드하면 메모리가 한계에 도달 할 수 있습니다.

답변

3

예, Castle ActiveRecord는 페이징을 지원합니다.

또한 정의 할 수 있습니다 (10)가 첫 번째 결과 지수와 20 페이지 크기입니다

Post[] posts = Post.SlicedFindAll(10, 20); 

(이것은 20 개 Post의 배열을 반환합니다) : NHibernate's API for paging 이외에, 당신은, 예를 들어 SlicedFindAll()을 사용할 수 있습니다 기준은, 예를 들어 게시물의 첫 번째 100 명으로 댓글을 가져올 수 있습니다 :

Post post = ...  
Comment[] comments = Comment.SlicedFindAll(0, 100, Restrictions.Eq("Post", post)); 

할 수도 "페이지"(HasManyAttribute에서 BatchSize에서 속성에 해당) batch fetching를 사용하여 컬렉션을하지만,이 배치 크기가 고정되어 일반 페이징 접근 방식만큼 유연하지 않습니다.

+0

감사합니다. Mauricio. 이것이 마크 업에 통합 될 수 있는지 명확하게 설명해 주시겠습니까? 내 말은, HasMany 속성을 사용하면 데이터베이스에서 모든 콜렉션 내용을로드하지 못하게 할 수 있습니까? – Alex

+0

'마크 업'의 의미를 이해하지 못합니다. HTML? –

+0

일괄 처리 페칭에 대한 정보를 추가했지만 콜렉션 페이징을 포함하여 일반 페이징에 대해 이미 설명했습니다. –