Skip to content

Instantly share code, notes, and snippets.

@fatagun
Last active March 26, 2016 10:45

Revisions

  1. fatagun revised this gist Mar 26, 2016. 1 changed file with 25 additions and 1 deletion.
    26 changes: 25 additions & 1 deletion BulkInsertSqlServerwithGenericList
    Original file line number Diff line number Diff line change
    @@ -15,4 +15,28 @@ public static class IEnumerableExtensions
    }
    return table;
    }
    }
    }


    using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SomeConnectionString"].ConnectionString))
    {
    connection.Open();
    SqlTransaction transaction = connection.BeginTransaction();

    using (var bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.Default, transaction))
    {
    bulkCopy.BatchSize = 100;
    bulkCopy.DestinationTableName = "dbo.Person";
    try
    {
    bulkCopy.WriteToServer(listPerson.AsDataTable());
    }
    catch (Exception)
    {
    transaction.Rollback();
    connection.Close();
    }
    }

    transaction.Commit();
    }
  2. fatagun created this gist Mar 26, 2016.
    18 changes: 18 additions & 0 deletions BulkInsertSqlServerwithGenericList
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    public static class IEnumerableExtensions
    {
    public static DataTable AsDataTable<T>(this IEnumerable<T> data)
    {
    PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
    var table = new DataTable();
    foreach (PropertyDescriptor prop in properties)
    table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
    foreach (T item in data)
    {
    DataRow row = table.NewRow();
    foreach (PropertyDescriptor prop in properties)
    row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
    table.Rows.Add(row);
    }
    return table;
    }
    }