Получить общее количество записей и пользовательское количество записей в одном попадании в базу данных

Я пытаюсь реализовать пользовательский пейджинг в сетке 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));

Это даст только записи только в соответствии с аргументами, я хочу вернуть отсюда общее количество записей и пользовательский номер записи

1 ответ

Решение

Я полагаю, вы используете MS-SQL Server? Ну, это не может быть сделано. Вам, по крайней мере, понадобится выборка для подсчета. Но это привело бы вас к анонимному типу результата, который выглядит некрасиво.

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

Другие вопросы по тегам