예제 #1
0
        public override TResult ExecuteReader <TResult>(string commandText, IDictionary <string, object> parameters,
                                                        Func <IDbReader, TResult> readerMapper)
        {
            using (var connection = _connectionProvider.GetOpenConnection())
                using (var command = connection.CreateCommand())
                {
                    command.CommandType = CommandType.Text;
                    EnableForeignKeys(command);
                    command.CommandText = commandText;
                    parameters.ForEach(parameter => command.Parameters.Add(new SqliteParameter(parameter.Key, parameter.Value ?? DBNull.Value)));

                    using (var reader = command.ExecuteReader())
                    {
                        var r = new DbReader(reader);
                        return(readerMapper(r));
                    }
                }
        }
예제 #2
0
        public override async Task <TResult> ExecuteReaderAsync <TResult>(string commandText, IDictionary <string, object> parameters, Func <IDbReader, TResult> readerMapper)
        {
            using (var connection = await _connectionProvider.GetOpenConnectionAsync().ConfigureAwait(false))
                using (var command = (SqliteCommand)connection.CreateCommand())
                {
                    command.CommandType = CommandType.Text;
                    EnableForeignKeys(command);
                    command.CommandText = commandText;
                    parameters.ForEach(
                        parameter =>
                        command.Parameters.Add(new SqliteParameter(parameter.Key,
                                                                   parameter.Value ?? DBNull.Value)));

                    using (var reader = await command.ExecuteReaderAsync())
                        using (var r = new DbReader(reader))
                        {
                            return(readerMapper(r));
                        }
                }
        }