Introduction

When working with databases, populating them with substantial amounts of data for testing or demonstration purposes is crucial. The Bogus package in C# provides a convenient way to generate fake data, making it an excellent choice for creating large sets of dummy records. This guide will walk you through inserting 1 million dummy product records into a SQL Server database using Bogus.

Step 1. Setup

Before beginning, ensure you have the following in place.

Step 2. Install Bogus Package

Start by installing the Bogus package into your C# project. You can use the NuGet Package Manager Console or the .NET CLI.

dotnet add package Bogus

Step 3. Define the Product Class

Create a Product the class that represents the structure of your Products table in the database.

public class Product
{
    public int ProductID { get; set; }
    public string ProductName { get; set; }
    public decimal Price { get; set; }
    public string Description { get; set; }
    public string Category { get; set; }
}

Step 4. Generate and Insert Dummy Data

Utilize Bogus to generate and insert data into the SQL Server database.

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using Bogus;

class Program
{
    static void Main()
    {
        string connectionString = "YourConnectionStringHere"; // Replace with your SQL Server connection string
        int recordsToInsert = 1000000; // Number of records to insert

        using (var connection = new SqlConnection(connectionString))
        {
            connection.Open();

            var bogus = new Faker<Product>()
                .RuleFor(p => p.ProductID, f => f.IndexFaker + 1)
                .RuleFor(p => p.ProductName, f => f.Commerce.ProductName())
                .RuleFor(p => p.Price, f => f.Finance.Amount(10, 1000))
                .RuleFor(p => p.Description, f => f.Lorem.Paragraph())
                .RuleFor(p => p.Category, f => f.Commerce.Categories(1)[0]);

            var products = bogus.Generate(recordsToInsert);

            using (var transaction = connection.BeginTransaction())
            {
                var insertQuery = "INSERT INTO Products (ProductID, ProductName, Price, Description, Category) VALUES (@ProductID, @ProductName, @Price, @Description, @Category)";
                
                foreach (var product in products)
                {
                    using (var command = new SqlCommand(insertQuery, connection, transaction))
                    {
                        command.Parameters.AddWithValue("@ProductID", product.ProductID);
                        command.Parameters.AddWithValue("@ProductName", product.ProductName);
                        command.Parameters.AddWithValue("@Price", product.Price);
                        command.Parameters.AddWithValue("@Description", product.Description);
                        command.Parameters.AddWithValue("@Category", product.Category);

                        command.ExecuteNonQuery();
                    }
                }

                transaction.Commit();
            }
        }

        Console.WriteLine("Data insertion complete.");
    }
}

Step 5. Execution

Replace "YourConnectionStringHere" with your SQL Server connection string. Run the application, and it will use Bogus to generate 1 million dummy product records and insert them into your Products table within the DummyDB database.

Conclusion

Bogus simplifies the generation of fake data, enabling the insertion of a large number of dummy records into a SQL Server database. This method allows for efficient testing, development, or demonstration scenarios without the need for manually creating extensive datasets.