예제 #1
0
        public static void ExecutarReader(this BancoDeDados bancoDeDados, Comando comando, AcaoReader acao)
        {
            using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
            {
                while (reader.Read())
                {
                    acao(reader);
                }

                reader.Close();
            }
        }
예제 #2
0
        public static T ObterEntity <T>(this BancoDeDados bancoDados, Comando comando, AcaoReader <T> acao = null) where T : class
        {
            string strType = "";

            using (IDataReader reader = bancoDados.ExecutarReader(comando))
            {
                #region [ Tipo Classe ]

                T tObject            = Activator.CreateInstance <T>();
                PropertyInfo[] props = typeof(T).GetProperties();

                if (reader.Read())
                {
                    foreach (PropertyInfo prop in props)
                    {
                        if (reader.ContainsColumn(prop.Name))
                        {
                            strType = prop.PropertyType.ToString();

                            if (strType.Contains("Nullable"))
                            {
                                strType = strType.Substring(strType.IndexOf('[') + 1, strType.IndexOf(']') - strType.IndexOf('[') - 1);
                            }

                            prop.SetValue(tObject, Convert.ChangeType(reader[prop.Name], Type.GetType(strType)), null);
                        }
                    }

                    if (acao != null)
                    {
                        acao(reader, tObject);
                    }
                }

                reader.Close();

                return(tObject);

                #endregion
            }
        }
예제 #3
0
        public static List <T> ObterEntityList <T>(this BancoDeDados bancoDados, Comando comando, AcaoReader <T> acao = null)
        {
            using (IDataReader reader = bancoDados.ExecutarReader(comando))
            {
                List <T> lstRetorno = new List <T>();
                T        tObject;
                string   strType = "";

                #region Tipo Primitivo

                if (reader.FieldCount == 1)
                {
                    while (reader.Read())
                    {
                        lstRetorno.Add((T)Convert.ChangeType(reader[0], typeof(T)));

                        if (acao != null)
                        {
                            acao(reader, lstRetorno.Last());
                        }
                    }

                    reader.Close();

                    return(lstRetorno);
                }

                #endregion

                #region Tipo Classe

                PropertyInfo[] props = typeof(T).GetProperties();

                while (reader.Read())
                {
                    tObject = Activator.CreateInstance <T>();

                    foreach (PropertyInfo prop in props)
                    {
                        if (reader.ContainsColumn(prop.Name))
                        {
                            strType = prop.PropertyType.ToString();

                            if (strType.Contains("Nullable"))
                            {
                                strType = strType.Substring(strType.IndexOf('[') + 1, strType.IndexOf(']') - strType.IndexOf('[') - 1);
                            }

                            prop.SetValue(tObject, Convert.ChangeType(reader[prop.Name], Type.GetType(strType)), null);
                        }
                    }

                    lstRetorno.Add(tObject);
                    if (acao != null)
                    {
                        acao(reader, lstRetorno.Last());
                    }
                }

                reader.Close();

                return(lstRetorno);

                #endregion
            }
        }