Example #1
0
        public virtual async Task <List <T> > ExecuteReaderAsync <T>(CommandType cmdType,
                                                                     string cmdText, Func <IDataReader, T> transform, params OracleParameter[] commandParameters)
        {
            var myList = new List <T>();

            using (var connection = new OracleConnection(ConnectionString))
            {
                await connection.OpenAsync();

                using (var command = new OracleCommand(cmdText, connection))
                {
                    command.CommandType = cmdType;
                    if (commandParameters != null)
                    {
                        command.Parameters.AddRange(commandParameters);
                    }

                    // Since none of the rows are likely to be large, we will execute this without specifying a CommandBehavior
                    // This will cause the default (non-sequential) access mode to be used
                    using (var reader = await command.ExecuteReaderAsync())
                    {
                        //if (await reader.ReadAsync())
                        //{
                        while (await reader.ReadAsync())
                        {
                            myList.Add(transform(reader));
                        }
                        //}
                    }
                }
            }
            return(myList);
        }