public List <T> ExecuteReader <T>(string nomeProcedure, MapeamentoHandler <T> metodoDeMapeamento, params SqlParameter[] parametros)
        {
            var lista = new List <T>();

            using (var conexao = new SqlConnection(_stringConexao))
            {
                conexao.Open();
                //const string nomeProcedure = "ListaSelecionar";

                using (var comando = new SqlCommand(nomeProcedure, conexao))
                {
                    comando.CommandType = CommandType.StoredProcedure;
                    if (parametros != null)
                    {
                        comando.Parameters.AddRange(parametros);
                    }

                    using (var registro = comando.ExecuteReader())
                    {
                        while (registro.Read())
                        {
                            lista.Add(metodoDeMapeamento(registro));
                        }
                    }
                }
            }

            return(lista);
        }
Esempio n. 2
0
        //protected IEnumerable<T> ExecuteReader<T>(string nomeProcedure, Func<SqlDataReader, T> metodoDeMapeamento, params SqlParameter[] parametros)
        protected List <T> ExecuteReader <T>(string nomeProcedure, MapeamentoHandler <T> metodoDeMapeamento, params SqlParameter[] parametros)
        {
            var lista = new List <T>();

            using (var conexao = new SqlConnection(_stringConexao))
            {
                conexao.Open();

                using (var comando = conexao.CreateCommand())
                {
                    comando.CommandType = CommandType.StoredProcedure;
                    comando.CommandText = nomeProcedure;

                    if (parametros != null)
                    {
                        comando.Parameters.AddRange(parametros);
                    }

                    using (var registro = comando.ExecuteReader())
                    {
                        while (registro.Read())
                        {
                            // yield - acumular.
                            //yield return metodoDeMapeamento(registro);
                            lista.Add(metodoDeMapeamento(registro));
                        }
                    }
                }
            }

            return(lista);
        }