public DapperBenchmarkResult RunBenchmark(int numberOfEntriesToInsertPerRun, int numberOfRuns)
        {
            var result = new DapperBenchmarkResult(numberOfEntriesToInsertPerRun, numberOfRuns);

            WriteLine(
                $"Starging a dapper Benchmark run with {numberOfEntriesToInsertPerRun} per run, repeated {numberOfRuns} times");

            GenerateProducts(numberOfEntriesToInsertPerRun);

            for (int i = 0; i < numberOfRuns; i++)
            {
                WriteLine(@"Cleaning Database!");
                productWriter.CleanProducts();

                WriteLine(@"====================================================");
                WriteLine($"Starting run number {i + 1}");
                WriteLine(@"====================================================");

                WriteLine(@"Running inserts with separate Dapper Execute Calls");
                WriteLine(@"Running connection.Execute(Commands.WriteOne, product);");
                var insertUsingForLoopTime = InsertUsingForLoop();

                WriteLine(@"Cleaning Database!");
                productWriter.CleanProducts();

                WriteLine(@"===============================================");
                WriteLine(@"Running inserts with Single Dapper Execute Call and Passing a Collection!");
                WriteLine(@"Running connection.Execute(Commands.WriteOne, products);");
                var insertUsingDapperCollectionTime = InsertUsingDapperCollectionInsert();

                WriteLine(@"Cleaning Database!");
                productWriter.CleanProducts();

                WriteLine(@"===============================================");
                WriteLine(@"Running inserts with Data Table, table value parameter!");
                WriteLine(@"connection.Execute(Commands.BatchInsert, new { @data = dataTable.AsTableValuedParameter(""dbo.ProductType"") });");
                var insertUsingBatcAndTableValueParamTime = InsertUsingDataTable();
                
                WriteLine(@"Cleaning Database!");
                productWriter.CleanProducts();

                result.Add(insertUsingForLoopTime, insertUsingDapperCollectionTime, insertUsingBatcAndTableValueParamTime);
            }

            return result;
        }
        public DapperBenchmarkResult RunBenchmark(int numberOfEntriesToInsertPerRun, int numberOfRuns)
        {
            var result = new DapperBenchmarkResult(numberOfEntriesToInsertPerRun, numberOfRuns);

            WriteLine(
                $"Starging a dapper Benchmark run with {numberOfEntriesToInsertPerRun} per run, repeated {numberOfRuns} times");

            GenerateProducts(numberOfEntriesToInsertPerRun);

            for (int i = 0; i < numberOfRuns; i++)
            {
                WriteLine(@"Cleaning Database!");
                productWriter.CleanProducts();

                WriteLine(@"====================================================");
                WriteLine($"Starting run number {i + 1}");
                WriteLine(@"====================================================");

                WriteLine(@"Running inserts with separate Dapper Execute Calls");
                WriteLine(@"Running connection.Execute(Commands.WriteOne, product);");
                var insertUsingForLoopTime = InsertUsingForLoop();

                WriteLine(@"Cleaning Database!");
                productWriter.CleanProducts();

                WriteLine(@"===============================================");
                WriteLine(@"Running inserts with Single Dapper Execute Call and Passing a Collection!");
                WriteLine(@"Running connection.Execute(Commands.WriteOne, products);");
                var insertUsingDapperCollectionTime = InsertUsingDapperCollectionInsert();

                WriteLine(@"Cleaning Database!");
                productWriter.CleanProducts();

                WriteLine(@"===============================================");
                WriteLine(@"Running inserts with Data Table, table value parameter!");
                WriteLine(@"connection.Execute(Commands.BatchInsert, new { @data = dataTable.AsTableValuedParameter(""dbo.ProductType"") });");
                var insertUsingBatcAndTableValueParamTime = InsertUsingDataTable();

                WriteLine(@"Cleaning Database!");
                productWriter.CleanProducts();

                result.Add(insertUsingForLoopTime, insertUsingDapperCollectionTime, insertUsingBatcAndTableValueParamTime);
            }

            return(result);
        }