public List <T> ExecuteList <T>(IDbTransaction p_transaction) where T : new() { TableInformation t_tableInformation = this.GetTableInformations(typeof(T)); SqlCommandHelper t_sqlHelper = new SqlCommandHelper(m_providerConfiguration, t_tableInformation); string t_sql = t_sqlHelper.CreateSelectForList(); IDbCommand cmd = p_transaction.Connection.CreateCommand(); cmd.Transaction = p_transaction; cmd.CommandText = t_sql; IDataReader t_reader = cmd.ExecuteReader(); try { List <T> t_results = new List <T>(); while (t_reader.Read()) { T t_genericObject = new T(); this.PopulateEntity(t_reader, t_tableInformation, t_genericObject); t_results.Add(t_genericObject); } return(t_results); } finally { t_reader.Close(); } }