using System.Collections.Generic;
using System.Data.SqlClient;
public static void Main()
var customizeToSynchronize = new List<Customer>();
for(int i = 0; i < 2; i++)
customizeToSynchronize.Add(new Customer() { Code = "Code_" + i, FirstName = "Updated_FirstName_" + i, LastName = "Updated_LastName_" + i });
for(int i = 0; i < 2; i++)
customizeToSynchronize.Add(new Customer() { CustomerID = 1000 + i, Code = "New_Code_" + i, FirstName = "New_FirstName_" + i, LastName = "New_LastName_" + i });
using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()))
ShowData(connection, "Before");
using (var bulk = new BulkOperation<Customer>(connection))
bulk.DestinationTableName = "Customers";
bulk.SynchronizeKeepidentity = true;
bulk.AutoMapKeyExpression = customer => customer.Code;
bulk.BulkSynchronize(customizeToSynchronize);
ShowData(connection, "After");
public static void ShowData(SqlConnection connection, string text)
using (var command = connection.CreateCommand())
var sqlDataAdapter = new SqlDataAdapter(command);
ds.Tables[0].TableName = "1 - Customers " + text;
FiddleHelper.WriteTable(ds.Tables[0]);
public static void GenerateCustomers(int count)
List<Customer> list = new List<Customer>();
for(int i = 0; i < count; i++)
list.Add(new Customer() { Code = "Code_" + i, FirstName = "FirstName_" + i, LastName = "LastName_" + i });
using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()))
using (var bulk = new BulkOperation<Customer>(connection))
bulk.DestinationTableName = "Customers";
public static void GenerateDatabase()
using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()))
using (var command = connection.CreateCommand())
[CustomerID] [INT] IDENTITY(1,1) NOT NULL,
[Code] [NVARCHAR](MAX) NULL,
[FirstName] [NVARCHAR](MAX) NULL,
[LastName] [NVARCHAR](MAX) NULL,
CONSTRAINT [PK_Customers] PRIMARY KEY CLUSTERED
command.ExecuteNonQuery();
public int CustomerID { get; set; }
public string Code { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }