public static void BulkInsert <TSource>( this SqlConnection connection, string tableName, IReadOnlyCollection <TSource> source, Func <IColumnsMappingConfigurator <TSource>, IColumnsMappingConfigurator <TSource> > columnsMappingSetup, SqlTransaction transaction = null, int?batchSize = null, int?timeout = null) where TSource : class { BulkInsert( connection, tableName, source, x => { var provider = new ManualConfiguredStrictTypeMappingInfoProvider <TSource>(x); columnsMappingSetup(provider); return(provider); }, transaction, batchSize, timeout ); }
public static void BulkInsert <TSource>( this SqlConnection connection, string tableName, IReadOnlyCollection <TSource> source, Func <IColumnsMappingConfigurator <TSource>, IColumnsMappingConfigurator <TSource> > columnsMappingSetup = null, SqlTransaction transaction = null, int?batchSize = null, TimeSpan?timeout = null) where TSource : class { if (columnsMappingSetup != null) { BulkInsert( connection, tableName, source, x => { var provider = new ManualConfiguredStrictTypeMappingInfoProvider <TSource>(x); columnsMappingSetup(provider); return(provider); }, transaction, batchSize, timeout ); } else if (typeof(TSource) == typeof(ExpandoObject)) { BulkInsert( connection, tableName, source, x => new ExpandoObjectMappingInfoProvider(source.First() as Dictionary <string, object>, x), transaction, batchSize, timeout ); } else { BulkInsert( connection, tableName, source, x => new StrictTypeMappingInfoProvider(source.First().GetType(), x), transaction, batchSize, timeout ); } }