Bulk Operations - Logging - LogDump (NET Core)

CSharp · Console

/Program.cs

// Bulk Operations
// Doc: https://bulk-operations.net/log-dump

// @nuget: Z.BulkOperations
// @nuget: System.Data.SqlClient
using System;
using System.Text;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using Z.BulkOperations;
				
public class Program
{
	public static void Main()
	{
		CreateDatabase();
		SeedDatabase();
		
		Execute();
	}
	
	public static void Execute()
	{
		// We will execute a BulkMerge on a list that contains 1 new customer and 2 existing customers.
		var list = new List<Customer>();
		list.Add(new Customer() { Name = "Customer_C_Inserted", Description = "Description_Customer_C_Inserted", IsActive = false });
		list.Add(new Customer() { CustomerID = 1, Name = "Customer_A_Updated", Description = "Description_Customer_A_Updated", IsActive = false });
		list.Add(new Customer() { CustomerID = 2, Name = "Customer_B_Updated", Description = "Description_Customer_B_Updated", IsActive = false });
		
		using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()))
		{
			connection.Open();
			
			// Execute
            var sb = new StringBuilder();
            using (var bulk = new BulkOperation(connection))
            {
                bulk.DestinationTableName = "Customer";
                bulk.UseLogDump = true;
                
                bulk.BulkMerge(list);

                sb = bulk.LogDump;
            }

            Console.WriteLine(sb.ToString());			
		}
	}
	
	public static void SeedDatabase()
	{
		var list = new List<Customer>();
		list.Add(new Customer() { Name = "Customer_A", Description = "Description_Customer_A", IsActive = false });
		list.Add(new Customer() { Name = "Customer_B", Description = "Description_Customer_B", IsActive = false });

		using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()))
		{
			connection.Open();
			
            // SAVE customers
			using (var bulk = new BulkOperation<Customer>(connection))
			{
				// easy to use
				bulk.DestinationTableName = "Customer";

				bulk.BulkInsert(list);
			}
		}
	}
	
	public class Customer
	{
		public int CustomerID { get; set; }
		public string Name { get; set; }
		public string Description { get; set; }
		public Boolean IsActive { get; set; }
	}
	
	public static void CreateDatabase()
	{
		using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()))
		{
			connection.Open();
			using (var command = connection.CreateCommand())
			{
				command.CommandText = @"   
CREATE TABLE [dbo].[Customer] (
    [CustomerID]  INT            IDENTITY (1, 1) NOT NULL,
    [Name]        NVARCHAR (MAX) NULL,
    [Description] NVARCHAR (MAX) NULL,
    [IsActive]    BIT            NOT NULL,
    CONSTRAINT [PK_dbo.Customer] PRIMARY KEY CLUSTERED ([CustomerID] ASC)
);
";
				command.ExecuteNonQuery();
			}
		}
	}
}
;