Skip to content

Commit 36e88a5

Browse files
committed
TableInfor
1 parent bd2c105 commit 36e88a5

24 files changed

+106
-323
lines changed

src/EntityFrameworkCore.SqlServer.SimpleBulks/BulkDelete/BulkDeleteBuilder.cs

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using EntityFrameworkCore.SqlServer.SimpleBulks.Extensions;
22
using Microsoft.Data.SqlClient;
3-
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
43
using System;
54
using System.Collections.Generic;
65
using System.Linq;
@@ -14,9 +13,6 @@ public class BulkDeleteBuilder<T>
1413
{
1514
private TableInfor _table;
1615
private IEnumerable<string> _idColumns;
17-
private IReadOnlyDictionary<string, string> _columnNameMappings;
18-
private IReadOnlyDictionary<string, string> _columnTypeMappings;
19-
private IReadOnlyDictionary<string, ValueConverter> _valueConverters;
2016
private BulkDeleteOptions _options;
2117
private readonly SqlConnection _connection;
2218
private readonly SqlTransaction _transaction;
@@ -57,24 +53,6 @@ public BulkDeleteBuilder<T> WithId(Expression<Func<T, object>> idSelector)
5753
return this;
5854
}
5955

60-
public BulkDeleteBuilder<T> WithDbColumnMappings(IReadOnlyDictionary<string, string> columnNameMappings)
61-
{
62-
_columnNameMappings = columnNameMappings;
63-
return this;
64-
}
65-
66-
public BulkDeleteBuilder<T> WithDbColumnTypeMappings(IReadOnlyDictionary<string, string> columnTypeMappings)
67-
{
68-
_columnTypeMappings = columnTypeMappings;
69-
return this;
70-
}
71-
72-
public BulkDeleteBuilder<T> WithValueConverters(IReadOnlyDictionary<string, ValueConverter> valueConverters)
73-
{
74-
_valueConverters = valueConverters;
75-
return this;
76-
}
77-
7856
public BulkDeleteBuilder<T> ConfigureBulkOptions(Action<BulkDeleteOptions> configureOptions)
7957
{
8058
_options = new BulkDeleteOptions();
@@ -87,12 +65,12 @@ public BulkDeleteBuilder<T> ConfigureBulkOptions(Action<BulkDeleteOptions> confi
8765

8866
private string GetDbColumnName(string columnName)
8967
{
90-
if (_columnNameMappings == null)
68+
if (_table.ColumnNameMappings == null)
9169
{
9270
return columnName;
9371
}
9472

95-
return _columnNameMappings.TryGetValue(columnName, out string value) ? value : columnName;
73+
return _table.ColumnNameMappings.TryGetValue(columnName, out string value) ? value : columnName;
9674
}
9775

9876
public BulkDeleteResult Execute(IEnumerable<T> data)
@@ -103,8 +81,8 @@ public BulkDeleteResult Execute(IEnumerable<T> data)
10381
}
10482

10583
var temptableName = $"[#{Guid.NewGuid()}]";
106-
var dataTable = data.ToDataTable(_idColumns, valueConverters: _valueConverters);
107-
var sqlCreateTemptable = dataTable.GenerateTableDefinition(temptableName, null, _columnTypeMappings);
84+
var dataTable = data.ToDataTable(_idColumns, valueConverters: _table.ValueConverters);
85+
var sqlCreateTemptable = dataTable.GenerateTableDefinition(temptableName, null, _table.ColumnTypeMappings);
10886

10987
var joinCondition = string.Join(" AND ", _idColumns.Select(x =>
11088
{
@@ -187,8 +165,8 @@ public async Task<BulkDeleteResult> ExecuteAsync(IEnumerable<T> data, Cancellati
187165
}
188166

189167
var temptableName = $"[#{Guid.NewGuid()}]";
190-
var dataTable = await data.ToDataTableAsync(_idColumns, valueConverters: _valueConverters, cancellationToken: cancellationToken);
191-
var sqlCreateTemptable = dataTable.GenerateTableDefinition(temptableName, null, _columnTypeMappings);
168+
var dataTable = await data.ToDataTableAsync(_idColumns, valueConverters: _table.ValueConverters, cancellationToken: cancellationToken);
169+
var sqlCreateTemptable = dataTable.GenerateTableDefinition(temptableName, null, _table.ColumnTypeMappings);
192170

193171
var joinCondition = string.Join(" AND ", _idColumns.Select(x =>
194172
{

src/EntityFrameworkCore.SqlServer.SimpleBulks/BulkDelete/DbContextAsyncExtensions.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ public static Task<BulkDeleteResult> BulkDeleteAsync<T>(this DbContext dbContext
1616

1717
return new BulkDeleteBuilder<T>(connection, transaction)
1818
.WithId(dbContext.GetPrimaryKeys(typeof(T)))
19-
.WithDbColumnMappings(dbContext.GetColumnNames(typeof(T)))
20-
.WithDbColumnTypeMappings(dbContext.GetColumnTypes(typeof(T)))
21-
.WithValueConverters(dbContext.GetValueConverters(typeof(T)))
2219
.ToTable(dbContext.GetTableInfor(typeof(T)))
2320
.ConfigureBulkOptions(configureOptions)
2421
.ExecuteAsync(data, cancellationToken);

src/EntityFrameworkCore.SqlServer.SimpleBulks/BulkDelete/DbContextExtensions.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@ public static BulkDeleteResult BulkDelete<T>(this DbContext dbContext, IEnumerab
1414

1515
return new BulkDeleteBuilder<T>(connection, transaction)
1616
.WithId(dbContext.GetPrimaryKeys(typeof(T)))
17-
.WithDbColumnMappings(dbContext.GetColumnNames(typeof(T)))
18-
.WithDbColumnTypeMappings(dbContext.GetColumnTypes(typeof(T)))
19-
.WithValueConverters(dbContext.GetValueConverters(typeof(T)))
2017
.ToTable(dbContext.GetTableInfor(typeof(T)))
2118
.ConfigureBulkOptions(configureOptions)
2219
.Execute(data);

src/EntityFrameworkCore.SqlServer.SimpleBulks/BulkInsert/BulkInsertBuilder.cs

Lines changed: 18 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using EntityFrameworkCore.SqlServer.SimpleBulks.Extensions;
22
using Microsoft.Data.SqlClient;
3-
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
43
using System;
54
using System.Collections.Generic;
65
using 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}");

src/EntityFrameworkCore.SqlServer.SimpleBulks/BulkInsert/DbContextAsyncExtensions.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,9 @@ public static Task BulkInsertAsync<T>(this DbContext dbContext, IEnumerable<T> d
1818

1919
return new BulkInsertBuilder<T>(connection, transaction)
2020
.WithColumns(dbContext.GetInsertablePropertyNames(typeof(T)))
21-
.WithDbColumnMappings(dbContext.GetColumnNames(typeof(T)))
22-
.WithDbColumnTypeMappings(dbContext.GetColumnTypes(typeof(T)))
2321
.ToTable(dbContext.GetTableInfor(typeof(T)))
2422
.WithOutputId(idColumn?.PropertyName)
2523
.WithOutputIdMode(GetOutputIdMode(idColumn))
26-
.WithValueConverters(dbContext.GetValueConverters(typeof(T)))
2724
.ConfigureBulkOptions(configureOptions)
2825
.ExecuteAsync(data, cancellationToken);
2926
}
@@ -36,12 +33,9 @@ public static Task BulkInsertAsync<T>(this DbContext dbContext, IEnumerable<T> d
3633

3734
return new BulkInsertBuilder<T>(connection, transaction)
3835
.WithColumns(columnNamesSelector)
39-
.WithDbColumnMappings(dbContext.GetColumnNames(typeof(T)))
40-
.WithDbColumnTypeMappings(dbContext.GetColumnTypes(typeof(T)))
4136
.ToTable(dbContext.GetTableInfor(typeof(T)))
4237
.WithOutputId(idColumn?.PropertyName)
4338
.WithOutputIdMode(GetOutputIdMode(idColumn))
44-
.WithValueConverters(dbContext.GetValueConverters(typeof(T)))
4539
.ConfigureBulkOptions(configureOptions)
4640
.ExecuteAsync(data, cancellationToken);
4741
}

src/EntityFrameworkCore.SqlServer.SimpleBulks/BulkInsert/DbContextExtensions.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,9 @@ public static void BulkInsert<T>(this DbContext dbContext, IEnumerable<T> data,
1616

1717
new BulkInsertBuilder<T>(connection, transaction)
1818
.WithColumns(dbContext.GetInsertablePropertyNames(typeof(T)))
19-
.WithDbColumnMappings(dbContext.GetColumnNames(typeof(T)))
20-
.WithDbColumnTypeMappings(dbContext.GetColumnTypes(typeof(T)))
2119
.ToTable(dbContext.GetTableInfor(typeof(T)))
2220
.WithOutputId(idColumn?.PropertyName)
2321
.WithOutputIdMode(GetOutputIdMode(idColumn))
24-
.WithValueConverters(dbContext.GetValueConverters(typeof(T)))
2522
.ConfigureBulkOptions(configureOptions)
2623
.Execute(data);
2724
}
@@ -34,12 +31,9 @@ public static void BulkInsert<T>(this DbContext dbContext, IEnumerable<T> data,
3431

3532
new BulkInsertBuilder<T>(connection, transaction)
3633
.WithColumns(columnNamesSelector)
37-
.WithDbColumnMappings(dbContext.GetColumnNames(typeof(T)))
38-
.WithDbColumnTypeMappings(dbContext.GetColumnTypes(typeof(T)))
3934
.ToTable(dbContext.GetTableInfor(typeof(T)))
4035
.WithOutputId(idColumn?.PropertyName)
4136
.WithOutputIdMode(GetOutputIdMode(idColumn))
42-
.WithValueConverters(dbContext.GetValueConverters(typeof(T)))
4337
.ConfigureBulkOptions(configureOptions)
4438
.Execute(data);
4539
}

0 commit comments

Comments
 (0)