PUBLICIDADE
Este código tem nota
9,33

Autor

doo

Domingos Carreira de Paola

membro deste junho de 2009

Enquete

Qual é o melhor site de buscas da internet?
PUBLICIDADE

Usando Reflection para adicionar parâmetros por herança


Muitas vezes nos encontramos em um cenário onde as classes de entidade da nossa aplicação são uma representação fiel do banco de dados seguindo o modelo MVC.

Nessas situações muitas vezes na nossa camada de acesso a dados temos que fazer a passagem de parametros para inserts, updates e deletes um a um.

Utilizando o código a seguir basta criarmos uma classe pai, de onde todas as outras herdam (no caso do exemplo a classe Pessoa), então passando o command e a instancia da nossa classe filha deixamos o reflection fazer todo o trabalho, pegando cada propriedade existente na classe e adicionando um parametro ao nosso command.

Segue o código :
public void MontaParametro(ref DbCommand prCmd,Pessoa prPessoa) 
        {
            // instancia Sql como default
            DbParameter parametro = new SqlParameter();
            string identificador = "";
            //loop do reflection pegando cada propriedade da classe que foi passada e também da classe pai Pessoa
            foreach (PropertyInfo pi in prPessoa.GetType().GetProperties()) 
            {
                //Verificação do tipo de command (no caso do OracleCommand é necessário adicionar a referência ao System.Data.OracleClient
                if (prCmd.GetType() == typeof(SqlCommand))
                {
                    identificador = "@";
                    parametro = new SqlParameter();
                }
                else if (prCmd.GetType() == typeof(OracleCommand))
                {
                    identificador = ":";
                    parametro = new OracleParameter();
                }
                else if (prCmd.GetType() == typeof(OleDbCommand))
                {
                    identificador = "?";
                    parametro = new OleDbParameter();
                } 
                parametro.Value = pi.GetValue(prPessoa,null);
                parametro.ParameterName = identificador + pi.Name;
                prCmd.Parameters.Add(parametro);
            }
        }

// Domingos Carreira De Paola

ArquivoTipoTamanhoHits 
artigo.zipArquivo ZIP17,6 Kb248Baixar o Arquivo

Sim   Não   Este código foi útil para você?
NotaComentário
9
cidinha comentou em 18/2/2011

Muito bom

Não conhecia achei interessante.
9
alberto12 comentou em 11/9/2010

Bom

Gostei do código
10
usertop comentou em 3/1/2010

Bom

Legal gostei do código
Regras:
Os comentários seguem as seguintes regras:
  • Todos os comentários são enviados por membros cadastrados no site.
  • A pontuação de comentários de conteúdo do próprio membro não serão computados.
  • Os comentários serão pré-aprovados, porém a equipe do site revisará o conteúdo de todos os comentários podendo ser invalidados (inclusive a pontuação).
  • Os comentários precisam ter, obrigatóriamente, coerência sobre o conteúdo que será comentado.
  • O membro que atingir 5 comentários invalidados não poderá mais comentar dentro do site. Com isso o membro não poderá mais ganhar pontos com comentários.
  • Há um limite de 10 comentários por dia para cada membro.
  • Qualquer comentário após ter sido publicado poderá ser retirado através da opção ( denunciar)

Comente

     (ainda não tem cadastro? clique aqui!)


Máximo de 30 caracteres

Máximo de 255 caracteres
 

© 2006-2013 R&W Informática Ltda. - Todos os direitos reservados. - Política de Privacidade | Mapa do Site