public static int BulkInsertSql <T>(this IDbConnection con, IEnumerable <T> dataList, int linesPerBatch = 1000, int timeout = 0, DMLOptions options = null) { if (!dataList.HasAny()) { return(0); } if (con is SqlConnection) { using (var bulkCopy = new SqlBulkCopy(con as SqlConnection)) { bulkCopy.DestinationTableName = Statements <T> .Table(options); bulkCopy.BatchSize = linesPerBatch; bulkCopy.BulkCopyTimeout = timeout; var table = typeof(T).GetTable4BulkCopy(bulkCopy); table.SetRows(dataList); if (con.State != ConnectionState.Open) { con.Open(); } bulkCopy.WriteToServer(table); } } return(dataList.Count()); }
public static int BulkInsert <T>(this IDbConnection con, IEnumerable <T> dataList, IEnumerable <PropertyInfo> columns, int linesPerBatch, int timeout, DMLOptions options) { if (!(con is SqlConnection)) { throw new Exception("invalid connection, SqlConnection expected"); } if (!dataList.HasAny()) { return(0); } var curOptions = options ?? SqlDefaultOptions; using (var bulkCopy = new SqlBulkCopy(con as SqlConnection)) { bulkCopy.DestinationTableName = Statements <T> .Table(curOptions); bulkCopy.BatchSize = linesPerBatch; bulkCopy.BulkCopyTimeout = timeout; var table = typeof(T).GetTable4BulkCopy(bulkCopy, columns); table.SetRows(dataList, columns); if (con.State != ConnectionState.Open) { con.Open(); } bulkCopy.WriteToServer(table); } return(dataList.Count()); }