2013-11-27 5 views
2

히트, 내가 페이지 크기에 따라 내 테이블에 대한 전체 기록과 기록을 얻을 필요가있다. 나는 이것을 위해 컴파일 된 쿼리를 사용하고있다.총 레코드 카운트 가져 오기 및 기록의 정의 없음이 하나의 데이터베이스에 내가 Ext.js 그리드의 정의 페이징을 구현하기 위해 노력하고

는하지만 난 그냥 하나의 데이터베이스 타격을주고 싶다.

List<MyTable> .GetRecordsById(Int32 ID, Int32 start, Int32 limit) 
    { 
     return CompliedGetRecordsById_CustomPaging(_dbNavigation, ID, start, limit).ToList(); 
    } 

    /// <summary> 
    /// Complied query for retrieving manage tasks Custom Paging 
    /// </summary> 
    public static readonly Func<SomeEntities, Int32,Int32, Int32, IQueryable<MyTable>> CompliedGetTaskByProjectId_CustomPaging = 
     CompiledQuery.Compile<SomeEntities, Int32, Int32, Int32, IQueryable<MyTable>>((dbNavigation, ID, start, limit) => 
             dbNavigation.SiteTasksMappings.Include("TaskMaster") 
             .Where(x=> x.myTableID == ID && x.STMIsActive == 1).OrderBy(x=>x.STMID).Skip(start).Take(limit)); 

이는 단지 인수에 따라 기록을 줄 것이다, 내가 여기

답변

3

내가 당신에게 생각에서 총 기록 및 사용자 정의 기록을 전혀 반환하지 할 는 MS-SQL 서버를 사용하고 있습니까? 그럼이 일은 할 수 없습니다. 적어도 카운트에는 subselect가 필요합니다. 하지만 그렇게되면 익숙하지 않은 결과 유형으로 연결될 수 있습니다.

나는 총 카운트 필드를 추가 같은 테이블에 대한 뷰를 작성하는 방법을 추천합니다. MS SQL Server는 하나의 테이블 만 다루는보기에 대한 쓰기 작업을 지원합니다. 좀 더 간단하게 저장 프로 시저를 작성하여 뷰의 엔티티 모델에 할당하면됩니다. 답장을

+0

덕분에, 나는이 대답을 참조 (http://stackoverflow.com/questions/7767409/better-way-to-query-a-page-of-data-and-get-total으로 시도 내가 SQL 프로파일 러를 가지고 있지 않는 한 -count -에 - 엔티티 프레임 워크-4-1), 나는 그것의 단 하나의 쿼리 최적화 프로그램이 어떻게 작동하는지 살펴 – Rex

+1

@Rex 음을 명중주는 것을,하지만 그것을 확인할 수 아니다 쿼리 및 실행 방법 ... 어쨌든 내 포인트는 이러한 경우에 뷰를 가져와야한다는 것입니다. subselects 또는 그룹화를 사용하는 경우 그것은 이제 당신에게 달려 있습니다. 요점은 데이터베이스 (또는 심지어 당신)가 초기 상태에서 쿼리를 최적화 할 수 있다는 것입니다. 귀하의 질의는 어느 시점에서 항상 데이터베이스에 대해 새로운 것입니다 – sra