/// <summary> /// Gets the database table data. /// </summary> /// <param name="basicTableColumns">The basic table columns.</param> /// <returns> /// A task which gets all the table data information. /// </returns> public virtual async Task <ConcurrentBag <TableColumnInformation> > GetDatabaseTableData(ConcurrentBag <TableColumnInformation> tableColumnInformation) { await Task.Run(() => Parallel.ForEach(tableColumnInformation, tableColumn => { SqlConnection sqlConnection = _sqlServerConnection.GetConnection(); string sqlToRun = $"SELECT { string.Join(",", tableColumn.ColumnNames) } FROM {tableColumn.TableName}"; using (SqlCommand dbCommand = sqlConnection.CreateCommand()) { dbCommand.CommandText = sqlToRun; SqlDataReader reader = dbCommand.ExecuteReader(); tableColumn.Data.Load(reader); reader.Dispose(); } _sqlServerConnection.DisposeConnection(sqlConnection); })); return(tableColumnInformation); }