public async Task <DataTable> GetDataTableAsync(System.Data.Common.DbCommand data_command, string tableName = null) { TaskCompletionSource <DataTable> source = new TaskCompletionSource <DataTable>(); var resultTable = new DataTable(tableName ?? data_command.CommandText); data_command.Connection = new SqlConnection(constring); DbDataReader dataReader = null; try { await data_command.Connection.OpenAsync(); dataReader = await data_command.ExecuteReaderAsync(CommandBehavior.Default); resultTable.Load(dataReader); source.SetResult(resultTable); } catch (Exception ex) { source.SetException(ex); } finally { if (dataReader != null) { dataReader.Close(); } data_command.Connection.Close(); } return(resultTable); }
async Task<World> ReadSingleRow(DbConnection connection, DbCommand cmd) { using (var rdr = await cmd.ExecuteReaderAsync(CommandBehavior.SingleRow)) { await rdr.ReadAsync(); return new World { Id = rdr.GetInt32(0), RandomNumber = rdr.GetInt32(1) }; } }
public static async ValueTask <DbDataReader> ReaderAsync(this System.Data.Common.DbCommand cmd, string command, CancellationToken cancellationToken = default) { cmd.CommandText = command; return(await cmd.ExecuteReaderAsync(cancellationToken)); }
private async Task<DbDataReader> DoExecuteReaderAsync(DbCommand command) { if (null == command.Connection) { DbContext context = await DbContext.GetContextAsync(this.name, false); command.Connection = context.Connection; } if (ConnectionState.Open != command.Connection.State) command.Connection.Open(); DoDbEvent(command, DbEventType.BeforeExecution); DbDataReader reader = await command.ExecuteReaderAsync(); DoDbEvent(command, DbEventType.AfterExecution); return reader; }