none
Objetos DTO RRS feed

  • Pergunta

  • Boa tarde pessoal!

    Tenho uma dúvida referente ao objeto DTO, espero conseguir explicar exatamente o que estou precisando.
    Eu tenho um banco de dados, no qual ele é antigo e segue uma estrutura no qual não posso mudar.

    Então imaginem o seguinte:

    //titular
    public string titular1
    
    public string titular2
    
    //endereco
    public string endereco1
    
    public string endereco2
    
    //Nº Cartao
    //Vias emitidos
    //Vencimento do cartão

    Bom, imaginem que para cada item comentado, ex: titular, endereco, nº, etc.. tenha 30 itens para cada 1.

    titular1, titular2, titular3, titular4, endereco1, endereco2, endereco3, endereco4... enfim, para cada 1 tem 20 campos no banco, e tem mais uns 8 itens além de nº de cartão, vias emitidos, vencimento, etc... para cada item deste 20, ou seja em uma linha do banco ele me retorna mais de 100 campos, isso mesmo!!

    Bom, sabendo disso.. em C# orientado a objetos, a DTO esta gigante, e quando vou na DAL, popular a DTO preciso fazer linha a linha campo1 = dr["campo1"], campo2 = dr["campo2"] e por aí vai.. .rs.

    Antigamente

    sabendo que os campos são todos iguais e só muda o número na frente..

    eu poderia fazer um for de 1 a 100 RS["Titular" + i] pegar o valor de "i" e ficaria muito, mas muito mais simples, tendo em vista q depois de repetir todas essas linhas na DAL, ainda preciso na VIEW popular na tela do usuário.

    A dúvida é, existe algum tipo de objeto na DTO que possa ser algo virtual como:
    se hoje tenho public string campo1 até 100 ( apenas um exemplo ).
    fazer algo do tipo public string campo que aceite 1 a 100, para eu popular na DAL sem a necessidade de repetir tanto as linhas?


    sexta-feira, 28 de outubro de 2016 17:26

Respostas

  • Uma das formas de se fazer e talvez o mais direto (sem uso de outras bibliotecas) seria utilizando Reflection. Assim você conseguirá buscar pelas propriedades passando o nome delas como string assim como faz com o objeto do banco de dados (datareader, datatable, etc.).

    Veja um exemplo em: http://stackoverflow.com/questions/1089123/setting-a-property-by-reflection-with-a-string-value

    Mas veja se realmente compensa fazer isto pois o uso de Reflection implica em um custo para aplicação, no que se refere a performance.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    sexta-feira, 28 de outubro de 2016 17:34

Todas as Respostas

  • Uma das formas de se fazer e talvez o mais direto (sem uso de outras bibliotecas) seria utilizando Reflection. Assim você conseguirá buscar pelas propriedades passando o nome delas como string assim como faz com o objeto do banco de dados (datareader, datatable, etc.).

    Veja um exemplo em: http://stackoverflow.com/questions/1089123/setting-a-property-by-reflection-with-a-string-value

    Mas veja se realmente compensa fazer isto pois o uso de Reflection implica em um custo para aplicação, no que se refere a performance.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    sexta-feira, 28 de outubro de 2016 17:34
  • Valeu Juliano, eu uso o Reflection para montar os logs.

    Acabei deixando passar e esqueci que poderia utilizar nesta situação. Obrigado novamente.

    sexta-feira, 28 de outubro de 2016 17:44