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)); } } }
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)); } } }