Exemple #1
0
        public async Task <IEnumerable <T> > ExecuteSelectAllAsync <T>(string sql, Func <IDatabaseResultReader, T> mappingFunc)
            where T : class, IRestResource
        {
            try
            {
                using (IDatabaseConnection connection = _sqlClassProvider.CreateSqlConnection(_connectionString))
                    using (IDatabaseCommand command = _sqlClassProvider.CreateSqlCommand(sql, connection))
                    {
                        await connection.OpenAsync().ConfigureAwait(false);

                        using (IDatabaseResultReader reader = await command.ExecuteReaderAsync().ConfigureAwait(false))
                        {
                            List <T> results = new List <T>();

                            while (await reader.ReadAsync().ConfigureAwait(false))
                            {
                                results.Add(mappingFunc(reader));
                            }

                            return(results);
                        }
                    }
            }
            catch (InvalidCastException ex)
            {
                throw InvalidConfigurationException.DataTypeMismatch(typeof(T).Name, ex);
            }
        }
Exemple #2
0
        public async Task <T> ExecuteSelectByIdAsync <T>(
            string sql,
            Func <IDatabaseResultReader, T> mappingFunc,
            Func <object, IDatabaseCommandParameter> paramProvider,
            object primaryKey)
            where T : class, IRestResource
        {
            try
            {
                using (IDatabaseConnection connection = _sqlClassProvider.CreateSqlConnection(_connectionString))
                    using (IDatabaseCommand command = _sqlClassProvider.CreateSqlCommand(sql, connection))
                    {
                        command.AddParameter(paramProvider(primaryKey));

                        await connection.OpenAsync().ConfigureAwait(false);

                        using (IDatabaseResultReader reader = await command.ExecuteReaderAsync().ConfigureAwait(false))
                        {
                            return(await reader.ReadAsync().ConfigureAwait(false) ? mappingFunc(reader) : default);