Esempio n. 1
0
 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
             );
     }
 }