public static void ExecutarReader(this BancoDeDados bancoDeDados, Comando comando, AcaoReader acao) { using (IDataReader reader = bancoDeDados.ExecutarReader(comando)) { while (reader.Read()) { acao(reader); } reader.Close(); } }
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 } }
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 } }