/// <summary>
 /// Busca os parametros que são Chave Primaria
 /// </summary>
 /// <param name="tipo">Tipo do model</param>
 /// <param name="modelo">Model</param>
 /// <returns>os Parametros que são chave primaria</returns>
 private SqlParameter[] BuscaNomeParametrosChavePrimaria(ModelPai modelo)
 {
     Type tipo = modelo.GetType();
     List<SqlParameter> listaParametros = new List<SqlParameter>();
     SqlParameter[] param = null;
     object[] cols;
     PropertyInfo[] prop;
     try
     {
         prop = tipo.GetProperties();
         //Varre as propriedades
         //---------------------
         for (int contador = 0; contador < prop.Length; contador++)
         {
             //Atribui os atributos de uma propriedade ao Array cols
             //-----------------------------------------------------
             cols = prop[contador].GetCustomAttributes(typeof(ColunasBancoDados), true);
             if (cols.Length > 0)
             {
                 ColunasBancoDados colunas = (ColunasBancoDados)cols[0];
                 if (colunas.ChavePrimaria == true)
                 {
                     listaParametros.Add(new SqlParameter("@" + colunas.NomeColuna, prop[contador].GetValue(modelo, null)));
                 }
             }
         }
         param = new SqlParameter[listaParametros.Count];
         for (int con = 0; con < listaParametros.Count; con++)
         {
             param[con] = listaParametros[con];
         }
         return param;
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         param = null;
         cols = null;
         prop = null;
     }
 }
 /// <summary>
 /// Varre o nome dos Parametros que estão no model através dos atributos
 /// </summary>
 /// <returns>Array de SqlParameter com os parametros para as procedures</returns>
 protected SqlParameter[] BuscaNomeParametros(ModelPai modelo, TipoComando tipoCom)
 {
     Type tipo = modelo.GetType();
     SqlParameter[] param = new SqlParameter[tipo.GetProperties().Length];
     object[] cols;
     object valor;
     PropertyInfo[] prop;
     try
     {
         prop = tipo.GetProperties();
         //Varre as propriedades
         //---------------------
         for (int contador = 0; contador < prop.Length; contador++)
         {
             //Atribui os atributos de uma propriedade ao Array cols
             //-----------------------------------------------------
             cols = prop[contador].GetCustomAttributes(typeof(ColunasBancoDados), true);
             if (cols.Length > 0)
             {
                 ColunasBancoDados colunas = (ColunasBancoDados)cols[0];
                 if (tipoCom == TipoComando.insert)
                 {
                     if (colunas.ChavePrimaria == true && prop[contador].GetValue(modelo, null) == null)
                     {
                         continue;
                     }
                 }
                 valor = prop[contador].GetValue(modelo, null);
                 if (valor == null)
                     valor = DBNull.Value;
                 param[contador] = new SqlParameter("@" + colunas.NomeColuna, valor);
             }
         }
         return this.AjustaTamanhoArray(param);
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         param = null;
         cols = null;
         prop = null;
         valor = null;
     }
 }