2013-11-27 6 views
2

Я пытаюсь реализовать пользовательский пейджинг в сетке Ext.js, мне нужно получить общие записи для моей таблицы и записей в соответствии с размером страницы. Для этого я использую скомпилированный запрос.Получить общее количество записей и пользовательское количество записей в одной базе данных Hit

Но я хочу дать только один хит базы данных.

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 Server? Ну, это невозможно. Вам, по крайней мере, потребуется подзапрос для подсчета. Но это приведет вас к анонимному типу результата, который является довольно уродливым.

Я рекомендую вам написать представление для таких таблиц, которое добавит общее поле счетчика. Обратите внимание, что MS SQL Server поддерживает операции записи для представлений, которые обращаются только к одной таблице. Если вы просто напишете несколько хранимых процедур и назначьте их модели сущности вида.

+0

благодарит за ответ, я попробовал со ссылкой на этот ответ (http://stackoverflow.com/questions/7767409/better-way-to-query-a-page-of-data-and-get-total -count-in-entity-framework-4-1), так как у меня нет профилировщика SQL, я не могу проверить его, хотя его даёт только один хит. – Rex

+1

@Rex. Посмотрите, что делает оптимизатор запросов с помощью запрос и то, как он выполняется ... В любом случае, я хочу сказать, что в таких случаях вы должны идти с представлениями. Теперь это зависит от вас, если вы используете подзапросы или группировку. Дело в том, что база данных (или даже вы) может оптимизировать запрос в раннем состоянии. Ваш запрос в какой-то момент всегда является новым для базы данных – sra