Fast SQL-Insert with C# and SqlBulkCopy

Fast SQL-Insert with C# and SqlBulkCopy

In .NET, there is a very fast and easy way to pump a variety of entities into an SQL database: SqlBulkCopy

1public void BulkInsert<TEntity>(string connectionString, string tableName, IList<TEntity> entities, params string[] columns)
2{
3    using SqlBulkCopy sqlCopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity | SqlBulkCopyOptions.KeepNulls)
4    using ObjectReader reader = ObjectReader.Create(entities, columns);
5    {
6        sqlCopy.DestinationTableName = tableName;
7        sqlCopy.WriteToServer(reader);
8    }
9}

Usage:

 1public class MyEntity
 2{
 3    public Id {get;set}
 4    public Name {get;set;}
 5    public EMail {get;set;}
 6}
 7
 8public class MySqlExporter
 9{
10    public void Export()
11    {
12        string connectionString = "your sql connection string";
13        string sqlTableName = "MyEntitiesTable";
14        List<MyEntity> myEntities = ... // here your code to read your existing entities or source
15
16        string[] copyParameters = {
17            nameof(MyEntity.Id)
18            nameof(MyEntity.Name),
19            nameof(MyEntity.EMail),
20        }
21
22        BulkInsert(connectionString, sqlTableName, myEntities, copyParameters);
23    }
24}

Comments

Twitter Facebook LinkedIn WhatsApp