public async Task <CommandResponse> ExecuteProcedure(ProcedureName procedureName, DbRequestToken token, params DataBaseParameter[] parameters) { var command = token.Connection.CreateCommand(); command.CommandType = CommandType.StoredProcedure; command.CommandText = procedureName.GetStringName(); command.Transaction = token.Transaction; AddParamsToCommand(command, parameters); var reader = await command.ExecuteReaderAsync(); var resp = new CommandResponse(); for (int i = 0; i < reader.FieldCount; i++) { resp.ColumnNames.Add(reader.GetName(i)); } while (reader.Read()) { var currentVals = new List <object>(reader.FieldCount); for (var i = 0; i < reader.FieldCount; ++i) { currentVals.Add(reader[i]); } } return(resp); }
public async Task <int> ExecuteProcedureNonQuery(ProcedureName procedureName, DbRequestToken token, params DataBaseParameter[] parameters) { var command = token.Connection.CreateCommand(); command.CommandType = CommandType.StoredProcedure; command.CommandText = procedureName.GetStringName(); command.Transaction = token.Transaction; AddParamsToCommand(command, parameters); return(await command.ExecuteNonQueryAsync()); }
private async Task <DataBaseParameter> GetDbParameter(ProcedureName procedureName, DbRequestToken token, ProcedureParameter parameter) { var dbParam = new DataBaseParameter(parameter); if (parameter.DbType.HasValue) { return(dbParam); } var procNameParam = new ProcedureParameter("procedureName", procedureName.GetStringName()) { DbType = SqlDbType.NVarChar }; var res = (await ExecProcedure <ProcedureParameterDescription>(ProcedureName.spInternalGetProcedureParameters, token, procNameParam)).Single(); dbParam.DbType = (SqlDbType)Enum.Parse(typeof(SqlDbType), res.ToString()); return(dbParam); }