none
Vinculação de dados com grande quantidade de parâmetros em asp.net RRS feed

  • Pergunta

  • Estou implementando um formulário de pesquisa com mais de 70 perguntas e preciso distribuir o conteúdo em algumas páginas, de forma que o preenchimento fique mais organizado para os usuários.
    Na hora de vincular os dados, pensei em usar instruções de insert na primeira página (usando SELECT@@ identity para recuperar o id gerado), passando este id como parâmetro para as páginas seguintes e daí para frente usando instruções update.

    Ocorre que mesmo dividindo em várias páginas, cada metodo insert e update teria muitos parâmetros, tornando o metodo anti-pattern e pouco confiável.

    Neste momento me sugeriram usar uma classe-entidade para cada página, e portanto gravando e atualizando o objeto ao final de cada página (com uma classe para cada página). 

    Gostaria de saber se essa é a abordagem correta, tendo em vista o esforço empregado criando as tabelas no banco de dados, controles no formulário e classes para cada página.

    terça-feira, 11 de dezembro de 2012 12:01

Respostas

  • Olá Rodrigo,

    Acredito que o melhor não seja orientar as entidades por página, e sim por bloco de assuntos, pois sua aplicação não pode ser orientada ao design das suas páginas, e sim as suas regras de negócio.

    O que eu faria seria:

    - Criar uma classe Formulário

    - Criar uma associação de Formulário com Cliente/Usuário (depende do seu sistema)

    - Tentar agrupar as perguntas do formulário por categorias, que assim se transformarão em classes, para então serem associadas com a classe Formulário.

    Talvez isso ajude.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    terça-feira, 11 de dezembro de 2012 13:36
    Moderador

Todas as Respostas

  • Olá Rodrigo,

    Tudo beleza?

    Acredito que dividir as perguntas do formulário em grupos lógicos e entidades subsequentes é uma boa, pois assim vc não terá uma classe mto grande, com mtas propriedades.

    E sim, vc pode na primeira tela gerar um ID para a seção do formulário de perguntas e depois atualizando sua tabela com os dados informados pelos usuários.

    Ao invés de usar o ID gerado pelo @@Identity, vc pode utilizar um GUID, e basear todas as suas atualizações com base nele.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    terça-feira, 11 de dezembro de 2012 13:17
    Moderador
  • Fernando, primeiro obrigado pela resposta.

    Não conhecia o conceito de GUID. Vou dar uma pesquisada, mas só de dar uma "googlada" ja me pareceu melhor.

    Quanto à abordagem da aplicação, você acha que é por aí mesmo?
    Ou seja, um par classe-entidade + página aspx para cada folha do questionário?

    terça-feira, 11 de dezembro de 2012 13:28
  • Olá Rodrigo,

    Acredito que o melhor não seja orientar as entidades por página, e sim por bloco de assuntos, pois sua aplicação não pode ser orientada ao design das suas páginas, e sim as suas regras de negócio.

    O que eu faria seria:

    - Criar uma classe Formulário

    - Criar uma associação de Formulário com Cliente/Usuário (depende do seu sistema)

    - Tentar agrupar as perguntas do formulário por categorias, que assim se transformarão em classes, para então serem associadas com a classe Formulário.

    Talvez isso ajude.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    terça-feira, 11 de dezembro de 2012 13:36
    Moderador
  • Acho que é esse o caminho.


    Obrigado!

    terça-feira, 11 de dezembro de 2012 13:40