PUBLICIDADE

Autor

doo

Domingos Carreira de Paola

membro deste junho de 2009

Compartilhe e guarde

  • Rec6
  • StumbleUpon
  • ueba
  • linkk
  • dihitt
  • linkloko
  • linkto
  • Technorati
  • Simpy
  • del.icio.us
  • Faves: Fave It!

PUBLICIDADE

Enquete

Que programa de afiliados é mais rentável?

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 Kb23Baixar o Arquivo
Sim   Não   Este código foi útil para você?
NotaComentário
Ainda não foi enviado nenhum comentário.
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
 

R&W Consulting - Soluções Web Hospedagem UOL HOST PagSeguro - solução para pagamentos online
© 2006-2009 R&W Informática Ltda. - Todos os direitos reservados.