automapper + carregamento lento + mvc contrib grade + s#arp repositórios
-
16-09-2020 - |
Pergunta
Eu estou usando o bom s#arp repositórios e a paginação método de extensão além de classificar como este:
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));
}
...
A minha primeira pergunta é:
(1) É correto que a classificação tem de ser feito antes de paginação e que tudo isso utiliza carregamento lento (por exemplo,internamente usa SUPERIOR n ou algo do SQL real)?
Uma das insuficiências do actual mvc contrib grade de implementação é que ela não permite a ordenação por colunas personalizadas (por exemplo,combinado valores da coluna) como este:
String.Format("{0} {1}", lab.Proposer.LastName, lab.Proposer.FirstName)
(usado no vista)
Eu tentei evitar de ver os modelos no meu bastante simples s#arp solução, mas talvez eu poderia fazer com um modelo de modo de exibição, neste caso, para permitir a classificação por colunas personalizadas.
Eu tenho usado o automapper para mapear modelos de domínio para ver os modelos e vice-versa, no passado.No entanto, eu tenho um problema com essa solução.Isso ainda funciona usando carregamento lento?
Em outras palavras, não automapper não é necessário mapear TODOS os objetos de domínio para o modo de exibição de objetos antes de poder fazer a ordenação e paginação resultando na diminuição do desempenho?
Espero que isso faz sentido e você entender o que eu estou chegando.Obrigado.
Com os melhores cumprimentos,
Cristão
Solução
Sim classificação e consulta ( onde algo = bla bla) tem que ser feito antes de paginação, na verdade, você terá que se preocupar com isso apenas se você escrever sql, caso contrário, se você usar o hibernate ou linq2sql ou algo semelhante, que você não
todos os automapper está fazendo é tomando os valores de um objeto e colocá-lo em outro objeto (há alguns conversão de dados envolvidos, configuração e todas essas coisas), a menos que você escrever algumas coisas em um personalizado valueresolver onde basicamente você pode escrever qualquer coisa e depois você pode usar esse valueresolver por alguma propriedade específica
Cheers