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);
        }
Exemple #2
0
        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);
        }