private async Task SeedOrdersAsync(IProgress <int> recordsProgressHandler) { var sw = new Stopwatch(); sw.Start(); _logger.LogInformation("----- Seeding Orders"); var batcher = new SqlBatcher <Order>(_orderDataArray, "Ordering.Orders", CsvOrderParserFactory.HeaderColumns); using (var connection = new SqlConnection(_connectionString)) { connection.Open(); string sqlInsert; while ((sqlInsert = batcher.GetInsertCommand()) != string.Empty) { var sqlCommand = new SqlCommand(sqlInsert, connection); await sqlCommand.ExecuteNonQueryAsync(); recordsProgressHandler.Report(batcher.RowPointer); } } _logger.LogInformation("----- {TotalRows} {TableName} Inserted ({TotalSeconds:n3}s)", batcher.RowPointer, "Orders", sw.Elapsed.TotalSeconds); }
private async Task SeedCatalogItemsAsync(IProgress <int> recordsProgressHandler) { var sw = new Stopwatch(); sw.Start(); var itemCount = 0; var tagCount = 0; void Aggregator() { recordsProgressHandler.Report(itemCount + tagCount); }; var itemsProgressHandler = new Progress <int>(value => { itemCount = value; Aggregator(); }); var tagsProgressHandler = new Progress <int>(value => { tagCount = value; Aggregator(); }); _logger.LogInformation("----- Seeding CatalogItems"); var batcher = new SqlBatcher <CatalogItem>(_dataArray, "Catalog.CatalogItems", CsvCatalogItemParserFactory.HeaderColumns); using (var connection = new SqlConnection(_connectionString)) { connection.Open(); string sqlInsert; while ((sqlInsert = batcher.GetInsertCommand()) != string.Empty) { var sqlCommand = new SqlCommand(sqlInsert, connection); await sqlCommand.ExecuteNonQueryAsync(); recordsProgressHandler.Report(batcher.RowPointer); } } _logger.LogInformation("----- {TotalRows} {TableName} Inserted ({TotalSeconds:n3}s)", batcher.RowPointer, "CatalogItems", sw.Elapsed.TotalSeconds); //---------------------------------------------------------------------- // Not needed now because CatalogItems.csv already includes CatalogTags // Could be needed later on in case the items or tags get updated //---------------------------------------------------------------------- //await SeedCatalogTagsAsync(tagsProgressHandler); }