2010-12-26 2 views
1

내 CMS 용 작은 포럼을 만들고 있는데 내 DAL로 아음속 2.2를 사용하고 있습니다. 나는이처럼 내 theads로드 해요 :asp.net subsonic 2.2 페이징 연결 테이블 컬렉션

DAL.ForumThread item = DAL.ForumThread.FetchByID(id); 

을 내 데이터베이스에서 내 ForumPosts 테이블은 다음과 같습니다

ForumPostID | ThreadID | Description | UserID | CreatedOn| etc 

을 그래서 지금 내 DAL.ForumThread 항목이있을 때 내가 연결된 게시물을로드 할 수 있습니다 사용하여 수집 :

item.ForumPosts(); 

이 모두 잘 작동하지만, 문제는 내가 서버 측 페이징을 사용하고 보여주는처럼 너무 몇 가지 추가 선택 매개 변수를 추가 할 수있어 것입니다 활성 레코드 만.

SubSonic 2.2를 사용하는 경우에도 이것이 가능합니까? 해결 방법은 지금 막 새로운 SubSonic.Query를 만들고 스레드 ID로 게시물을 선택하고 거기에 문제없이 pageindex와 pagesize를 설정할 수 있지만 더 쉽게이 작업을 수행 할 수 있다고 생각하십니까?

또한 item.ForumPosts()를 사용하거나 새 쿼리를 시작하여 성능 차이가 발생하는지 알고 싶습니다. forumposts는 이미 ForumThreads 컬렉션에 있으며 새 데이터베이스 호출이 필요하지 않습니다. 권리?

나는 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다! 시간과 메리 크리스마스에 감사드립니다.

종류와 관련, 마크

답변

0

이것은 조금 늦게 간다, 그러나. 대신이 같은 쿼리 도구를 사용 무언가를 사용 할 수 있습니다

ForumPostsCollection posts = new ForumPostsCollection().Where(ForumPosts.Columns.ThreadId,1).Load(); 

당신이 절 같은 곳 단지를 반복하여 원하는만큼 매개 변수를 사용할 수 있습니다 : 심지어의 비교를 사용할 수 있습니다

ForumPostsCollection posts = new ForumPostsCollection().Where(ForumPosts.Columns.ThreadId,1).Where(ForumPosts.Active,true).Load(); 

Where는 과부하 상태에 빠졌습니다.

페이징 된 결과에 대해, 나는 당신이 그것을 할 수있을 것이라고 확신하지만, 저와 atm은 여기에 아음속을 가지고 있지 않습니다. 그리고 나는 2.2 버전의 docos에서 아무것도 찾을 수 없습니다. 그러나 v3를 위해 뭔가가 있습니다.

두 번째 질문에 대해 Subsonic은 Lazy Loading 모음을 사용합니다. 즉, ForumPosts 메서드를 실행하면 해당 컬렉션에 대한 다른 데이터베이스 호출이 발생합니다. 부모 엔티티에 대해서는 동일하지 않습니다. 규칙은 다음과 같습니다. ForumPosts() - 새 데이터베이스 호출이 완료되었습니다. 예 : post.Thread가로드 될 것입니다.

+1

도움을 주셔서 감사합니다. – Mark