automapper + отложенная загрузка + mvc contrib grid + s # arp репозитории - PullRequest
4 голосов
/ 15 июля 2010

Я использую хорошие репозитории s # arp и метод расширения подкачки, а также сортирую так:

public ViewResult Index(int? page, GridSortOptions sort) 
        {
            ViewData["sort"] = sort;

            if (!string.IsNullOrEmpty(sort.Column))
            {
                return View(this.LabService.GetAllLabs().OrderBy(sort.Column, sort.Direction).AsPagination(page ?? 1, 10));
            }

...

Мой первый вопрос:

(1) Правильно ли, что сортировка должна выполняться до подкачки страниц и что все это использует ленивую загрузку (т.е. внутренне использует TOP n или что-то в реальном SQL)?

Одним из недостатков текущей реализации грид-вкладов mvc является то, что она не позволяет сортировать настраиваемые столбцы (например, объединенные значения столбцов) следующим образом:

String.Format("{0} {1}", lab.Proposer.LastName, lab.Proposer.FirstName)

(используется в виде)

Я пытался избежать моделей представления в моем довольно простом решении s # arp, но, возможно, я мог бы сделать с моделью представления в этом случае, чтобы разрешить сортировку по пользовательским столбцам.

В прошлом я использовал autopper для отображения моделей доменов для просмотра моделей и наоборот. Однако у меня есть одна проблема с этим решением. Это все еще работает при ленивой загрузке?

Другими словами, не обязан ли autopper сопоставлять ВСЕ объекты домена с объектами представления, прежде чем он сможет выполнять сортировку и разбиение по страницам, что приведет к снижению производительности?

Надеюсь, это имеет смысл, и вы понимаете, к чему я клоню. Спасибо.

С наилучшими пожеланиями,

Christian

1 Ответ

0 голосов
/ 16 июля 2010
  1. Да, сортировка и запросы (где-то = бла-бла) должны быть выполнены до подкачки страниц, на самом деле вы должны заботиться об этом, только если вы пишете sql, в противном случае, если вы используете hibernate или linq2sql или что-то похожее, чем вы «т

  2. все, что делает автомат - это извлечение значений из одного объекта и помещение его в другой объект (требуется преобразование данных, конфигурация и все такое), если только вы не напишете некоторые вещи в пользовательском резольвере значений, где вы сможете в основном пишите что-нибудь, и после того, как вы можете использовать этот резольвер значения для некоторого определенного свойства

Приветствия

...