private async Task <IEnumerable <T> > Execute(string proc, IDataMapper <T> mapper, ParameterDictionary parameters) { //_logger.LogInformation($"DataAccess.Execute|Stored Proc: {proc}, Return type: {typeof(T).ToString()}, Data Mapper: {mapper?.GetType()?.ToString() ?? "N/A"}, Parameters: {parameters?.GetDynamicObject() ?? "N/A"}"); using (SqlConnection conn = new SqlConnection(_connectionString)) { conn.Open(); if (mapper != null) { SqlMapper.GridReader reader = await conn.QueryMultipleAsync(proc, parameters?.GetDynamicObject() ?? null, commandType : _sProcType) .ConfigureAwait(continueOnCapturedContext: false); return(await mapper.MapDataAsync(reader) .ConfigureAwait(continueOnCapturedContext: false)); } else if (parameters != null) { return(await conn.QueryAsync <T>(proc, parameters.GetDynamicObject(), commandType : _sProcType) .ConfigureAwait(continueOnCapturedContext: false)); } else { return(await conn.QueryAsync <T>(proc, commandType : _sProcType) .ConfigureAwait(continueOnCapturedContext: false)); } } }
protected async Task <object> ExecuteScalarWithTimeout(string proc, ParameterDictionary parameters, int?timeout) { //_logger.LogInformation($"DataAccess.ExecuteScalarWithTimeout|Stored Proc: {proc}, Parameters: {parameters?.GetDynamicObject() ?? "N/A"}, Timeout: {timeout ?? 0}"); using (SqlConnection conn = new SqlConnection(_connectionString)) { conn.Open(); return(await conn.ExecuteScalarAsync(proc, parameters?.GetDynamicObject(), commandTimeout : timeout, commandType : _sProcType) .ConfigureAwait(continueOnCapturedContext: false)); } }