11using EntityFrameworkCore . SqlServer . SimpleBulks . Extensions ;
22using Microsoft . Data . SqlClient ;
3- using Microsoft . EntityFrameworkCore . Storage . ValueConversion ;
43using System ;
54using System . Collections . Generic ;
65using System . Data ;
@@ -19,9 +18,6 @@ public class BulkInsertBuilder<T>
1918 private string _outputIdColumn ;
2019 private OutputIdMode _outputIdMode = OutputIdMode . ServerGenerated ;
2120 private IEnumerable < string > _columnNames ;
22- private IReadOnlyDictionary < string , string > _columnNameMappings ;
23- private IReadOnlyDictionary < string , string > _columnTypeMappings ;
24- private IReadOnlyDictionary < string , ValueConverter > _valueConverters ;
2521 private BulkInsertOptions _options ;
2622 private readonly SqlConnection _connection ;
2723 private readonly SqlTransaction _transaction ;
@@ -85,24 +81,6 @@ public BulkInsertBuilder<T> WithColumns(Expression<Func<T, object>> columnNamesS
8581 return this ;
8682 }
8783
88- public BulkInsertBuilder < T > WithDbColumnMappings ( IReadOnlyDictionary < string , string > columnNameMappings )
89- {
90- _columnNameMappings = columnNameMappings ;
91- return this ;
92- }
93-
94- public BulkInsertBuilder < T > WithDbColumnTypeMappings ( IReadOnlyDictionary < string , string > columnTypeMappings )
95- {
96- _columnTypeMappings = columnTypeMappings ;
97- return this ;
98- }
99-
100- public BulkInsertBuilder < T > WithValueConverters ( IReadOnlyDictionary < string , ValueConverter > valueConverters )
101- {
102- _valueConverters = valueConverters ;
103- return this ;
104- }
105-
10684 public BulkInsertBuilder < T > ConfigureBulkOptions ( Action < BulkInsertOptions > configureOptions )
10785 {
10886 _options = new BulkInsertOptions ( ) ;
@@ -115,12 +93,12 @@ public BulkInsertBuilder<T> ConfigureBulkOptions(Action<BulkInsertOptions> confi
11593
11694 private string GetDbColumnName ( string columnName )
11795 {
118- if ( _columnNameMappings == null )
96+ if ( _table . ColumnNameMappings == null )
11997 {
12098 return columnName ;
12199 }
122100
123- return _columnNameMappings . TryGetValue ( columnName , out string value ) ? value : columnName ;
101+ return _table . ColumnNameMappings . TryGetValue ( columnName , out string value ) ? value : columnName ;
124102 }
125103
126104 private bool ReturnGeneratedId => ! string . IsNullOrWhiteSpace ( _outputIdColumn ) ;
@@ -146,12 +124,12 @@ public void Execute(IEnumerable<T> data)
146124 DataTable dataTable ;
147125 if ( ! ReturnGeneratedId )
148126 {
149- dataTable = data . ToDataTable ( _columnNames , valueConverters : _valueConverters ) ;
127+ dataTable = data . ToDataTable ( _columnNames , valueConverters : _table . ValueConverters ) ;
150128
151129 _connection . EnsureOpen ( ) ;
152130
153131 Log ( $ "Begin executing SqlBulkCopy. TableName: { _table . SchemaQualifiedTableName } ") ;
154- dataTable . SqlBulkCopy ( _table . SchemaQualifiedTableName , _columnNameMappings , _connection , _transaction , _options ) ;
132+ dataTable . SqlBulkCopy ( _table . SchemaQualifiedTableName , _table . ColumnNameMappings , _connection , _transaction , _options ) ;
155133 Log ( "End executing SqlBulkCopy." ) ;
156134 return ;
157135 }
@@ -164,12 +142,12 @@ public void Execute(IEnumerable<T> data)
164142 columnsToInsert . Add ( _outputIdColumn ) ;
165143 }
166144
167- dataTable = data . ToDataTable ( columnsToInsert , valueConverters : _valueConverters ) ;
145+ dataTable = data . ToDataTable ( columnsToInsert , valueConverters : _table . ValueConverters ) ;
168146
169147 _connection . EnsureOpen ( ) ;
170148
171149 Log ( $ "Begin executing SqlBulkCopy. TableName: { _table . SchemaQualifiedTableName } ") ;
172- dataTable . SqlBulkCopy ( _table . SchemaQualifiedTableName , _columnNameMappings , _connection , _transaction , _options ) ;
150+ dataTable . SqlBulkCopy ( _table . SchemaQualifiedTableName , _table . ColumnNameMappings , _connection , _transaction , _options ) ;
173151 Log ( "End executing SqlBulkCopy." ) ;
174152 return ;
175153 }
@@ -191,19 +169,19 @@ public void Execute(IEnumerable<T> data)
191169 setId ( row , SequentialGuidGenerator . Next ( ) ) ;
192170 }
193171
194- dataTable = data . ToDataTable ( columnsToInsert , valueConverters : _valueConverters ) ;
172+ dataTable = data . ToDataTable ( columnsToInsert , valueConverters : _table . ValueConverters ) ;
195173
196174 _connection . EnsureOpen ( ) ;
197175
198176 Log ( $ "Begin executing SqlBulkCopy. TableName: { _table . SchemaQualifiedTableName } ") ;
199- dataTable . SqlBulkCopy ( _table . SchemaQualifiedTableName , _columnNameMappings , _connection , _transaction , _options ) ;
177+ dataTable . SqlBulkCopy ( _table . SchemaQualifiedTableName , _table . ColumnNameMappings , _connection , _transaction , _options ) ;
200178 Log ( "End executing SqlBulkCopy." ) ;
201179 return ;
202180 }
203181
204182 var temptableName = $ "[#{ Guid . NewGuid ( ) } ]";
205- dataTable = data . ToDataTable ( _columnNames , valueConverters : _valueConverters , addIndexNumberColumn : true ) ;
206- var sqlCreateTemptable = dataTable . GenerateTableDefinition ( temptableName , null , _columnTypeMappings ) ;
183+ dataTable = data . ToDataTable ( _columnNames , valueConverters : _table . ValueConverters , addIndexNumberColumn : true ) ;
184+ var sqlCreateTemptable = dataTable . GenerateTableDefinition ( temptableName , null , _table . ColumnTypeMappings ) ;
207185
208186 var mergeStatementBuilder = new StringBuilder ( ) ;
209187 mergeStatementBuilder . AppendLine ( $ "MERGE INTO { _table . SchemaQualifiedTableName } ") ;
@@ -345,12 +323,12 @@ public async Task ExecuteAsync(IEnumerable<T> data, CancellationToken cancellati
345323 DataTable dataTable ;
346324 if ( ! ReturnGeneratedId )
347325 {
348- dataTable = await data . ToDataTableAsync ( _columnNames , valueConverters : _valueConverters , cancellationToken : cancellationToken ) ;
326+ dataTable = await data . ToDataTableAsync ( _columnNames , valueConverters : _table . ValueConverters , cancellationToken : cancellationToken ) ;
349327
350328 await _connection . EnsureOpenAsync ( cancellationToken ) ;
351329
352330 Log ( $ "Begin executing SqlBulkCopy. TableName: { _table . SchemaQualifiedTableName } ") ;
353- await dataTable . SqlBulkCopyAsync ( _table . SchemaQualifiedTableName , _columnNameMappings , _connection , _transaction , _options , cancellationToken ) ;
331+ await dataTable . SqlBulkCopyAsync ( _table . SchemaQualifiedTableName , _table . ColumnNameMappings , _connection , _transaction , _options , cancellationToken ) ;
354332 Log ( "End executing SqlBulkCopy." ) ;
355333 return ;
356334 }
@@ -363,12 +341,12 @@ public async Task ExecuteAsync(IEnumerable<T> data, CancellationToken cancellati
363341 columnsToInsert . Add ( _outputIdColumn ) ;
364342 }
365343
366- dataTable = await data . ToDataTableAsync ( columnsToInsert , valueConverters : _valueConverters , cancellationToken : cancellationToken ) ;
344+ dataTable = await data . ToDataTableAsync ( columnsToInsert , valueConverters : _table . ValueConverters , cancellationToken : cancellationToken ) ;
367345
368346 await _connection . EnsureOpenAsync ( cancellationToken ) ;
369347
370348 Log ( $ "Begin executing SqlBulkCopy. TableName: { _table . SchemaQualifiedTableName } ") ;
371- await dataTable . SqlBulkCopyAsync ( _table . SchemaQualifiedTableName , _columnNameMappings , _connection , _transaction , _options , cancellationToken ) ;
349+ await dataTable . SqlBulkCopyAsync ( _table . SchemaQualifiedTableName , _table . ColumnNameMappings , _connection , _transaction , _options , cancellationToken ) ;
372350 Log ( "End executing SqlBulkCopy." ) ;
373351 return ;
374352 }
@@ -390,19 +368,19 @@ public async Task ExecuteAsync(IEnumerable<T> data, CancellationToken cancellati
390368 setId ( row , SequentialGuidGenerator . Next ( ) ) ;
391369 }
392370
393- dataTable = await data . ToDataTableAsync ( columnsToInsert , valueConverters : _valueConverters , cancellationToken : cancellationToken ) ;
371+ dataTable = await data . ToDataTableAsync ( columnsToInsert , valueConverters : _table . ValueConverters , cancellationToken : cancellationToken ) ;
394372
395373 await _connection . EnsureOpenAsync ( cancellationToken ) ;
396374
397375 Log ( $ "Begin executing SqlBulkCopy. TableName: { _table . SchemaQualifiedTableName } ") ;
398- await dataTable . SqlBulkCopyAsync ( _table . SchemaQualifiedTableName , _columnNameMappings , _connection , _transaction , _options , cancellationToken ) ;
376+ await dataTable . SqlBulkCopyAsync ( _table . SchemaQualifiedTableName , _table . ColumnNameMappings , _connection , _transaction , _options , cancellationToken ) ;
399377 Log ( "End executing SqlBulkCopy." ) ;
400378 return ;
401379 }
402380
403381 var temptableName = $ "[#{ Guid . NewGuid ( ) } ]";
404- dataTable = await data . ToDataTableAsync ( _columnNames , valueConverters : _valueConverters , addIndexNumberColumn : true , cancellationToken : cancellationToken ) ;
405- var sqlCreateTemptable = dataTable . GenerateTableDefinition ( temptableName , null , _columnTypeMappings ) ;
382+ dataTable = await data . ToDataTableAsync ( _columnNames , valueConverters : _table . ValueConverters , addIndexNumberColumn : true , cancellationToken : cancellationToken ) ;
383+ var sqlCreateTemptable = dataTable . GenerateTableDefinition ( temptableName , null , _table . ColumnTypeMappings ) ;
406384
407385 var mergeStatementBuilder = new StringBuilder ( ) ;
408386 mergeStatementBuilder . AppendLine ( $ "MERGE INTO { _table . SchemaQualifiedTableName } ") ;
0 commit comments