Usuário com melhor resposta
Objetos DTO

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?
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".
- Sugerido como Resposta Juliano Nunes Silva Oliveira sexta-feira, 28 de outubro de 2016 18:04
- Marcado como Resposta Robson William SilvaModerator sexta-feira, 28 de outubro de 2016 18:35
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".
- Sugerido como Resposta Juliano Nunes Silva Oliveira sexta-feira, 28 de outubro de 2016 18:04
- Marcado como Resposta Robson William SilvaModerator sexta-feira, 28 de outubro de 2016 18:35
-