WedX - журнал о программировании и компьютерных науках

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

Я пытаюсь реализовать пользовательское разбиение по страницам в сетке 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 поддерживает операции записи для представлений, которые обращаются только к одной таблице. Если вам нужно больше, просто напишите несколько хранимых процедур и назначьте их модели объекта представления.

27.11.2013
  • спасибо за ответ, я попытался со ссылкой на этот ответ (stackoverflow.com/questions/7767409/) , поскольку у меня нет профилировщика SQL, я не могу проверить, что он дает только один удар 27.11.2013
  • @Rex Хорошо, посмотрите, что оптимизатор запросов делает с запросом и как он выполняется ... В любом случае, я хочу сказать, что в таких случаях вам следует использовать представления. Теперь вам решать, используете ли вы подзапросы или группировку. Дело в том, что база данных (или даже вы) может оптимизировать запрос на ранней стадии. Ваш запрос в какой-то момент всегда является новым для базы данных 27.11.2013
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: wedx@cp9.ru