Dapper Plus - Bulk Insert - Description

CSharp · Console

/Program.cs

// Dapper Plus
// Doc: https://dapper-plus.net/bulk-insert

// @nuget: Dapper -Version 1.60.6
// @nuget: Z.Dapper.Plus

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using Dapper;
using Z.Dapper.Plus;

public class Program
{	
	public static void Main()
	{
		CreateDatabase();
		DapperPlusManager.Entity<Order>().Table("Orders")
										 .Identity(x => x.OrderID);

		var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer());
		
		var orders = GenerateOrders(10);
		
		// Easy to use
		connection.BulkInsert(orders);

		// Easy to customize
		connection.UseBulkOptions(options => options.InsertIfNotExists = true)
				  .BulkInsert(orders);

		FiddleHelper.WriteTable("Orders:", connection.Query<Order>("SELECT * FROM Orders"));
	}
	
	public class Order 
	{
		public int OrderID { get; set; }
		public string Number { get; set; }
		public decimal TotalPrice { get; set; }
		public int TotalQuantity { get; set; }
	}
	
	public static List<Order> GenerateOrders(int count)
	{
		var orders = new List<Order>();
		
		for(int i = 0; i < count; i++)
		{
			orders.Add(new Order() { Number = "Order_" + i, TotalPrice = 1 + i * 1.1m, TotalQuantity = 1 + i });
		}
		
		return orders;
	}
	
	public static void CreateDatabase()
	{
		using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()))
		{
			connection.Open();
			using (var command = connection.CreateCommand())
			{
				command.CommandText = @"   
CREATE TABLE [Orders]
(
	[OrderID] [INT] IDENTITY(1,1) NOT NULL,
	[Number] [VARCHAR](20) NULL,
	[TotalPrice] [Money] NULL,
	[TotalQuantity] [int] NULL,
	CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED 
	(
		[OrderID] ASC
	)
) ";
				command.ExecuteNonQuery();
			}
		}
	}
}
;