Skip to content

Commit 535d570

Browse files
Rename to columns
1 parent 4cdbff0 commit 535d570

14 files changed

Lines changed: 90 additions & 91 deletions

File tree

src/PhenX.EntityFrameworkCore.BulkInsert.MySql/MySqlBulkInsertProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ protected override async Task BulkInsert<T>(
4242
TableMetadata tableInfo,
4343
IEnumerable<T> entities,
4444
string tableName,
45-
IReadOnlyList<PropertyMetadata> properties,
45+
IReadOnlyList<ColumnMetadata> properties,
4646
BulkInsertOptions options,
4747
CancellationToken ctk
4848
)

src/PhenX.EntityFrameworkCore.BulkInsert.MySql/MySqlDialectBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ internal class MySqlServerDialectBuilder : SqlDialectBuilder
1414

1515
protected override bool SupportsMoveRows => false;
1616

17-
public override string CreateTableCopySql(string tempNameName, TableMetadata tableInfo, IReadOnlyList<PropertyMetadata> columns)
17+
public override string CreateTableCopySql(string tempNameName, TableMetadata tableInfo, IReadOnlyList<ColumnMetadata> columns)
1818
{
1919
return $"CREATE TEMPORARY TABLE {tempNameName} SELECT * FROM {tableInfo.QuotedTableName} WHERE 1 = 0;";
2020
}
@@ -46,9 +46,9 @@ protected override void AppendOnConflictStatement(StringBuilder sql)
4646
sql.Append("ON DUPLICATE KEY");
4747
}
4848

49-
protected override void AppendDoNothing(StringBuilder sql, IEnumerable<PropertyMetadata> insertedProperties)
49+
protected override void AppendDoNothing(StringBuilder sql, IEnumerable<ColumnMetadata> insertedColumns)
5050
{
51-
var columnName = insertedProperties.First().ColumnName;
51+
var columnName = insertedColumns.First().ColumnName;
5252

5353
sql.Append($"UPDATE {Quote(columnName)} = {GetExcludedColumnName(columnName)}");
5454
}

src/PhenX.EntityFrameworkCore.BulkInsert.PostgreSql/PostgreSqlBulkInsertProvider.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public PostgreSqlBulkInsertProvider(ILogger<PostgreSqlBulkInsertProvider>? logge
2323
/// <inheritdoc />
2424
protected override string AddTableCopyBulkInsertId => $"ALTER TABLE {{0}} ADD COLUMN {BulkInsertId} SERIAL PRIMARY KEY;";
2525

26-
private static string GetBinaryImportCommand(IReadOnlyList<PropertyMetadata> properties, string tableName)
26+
private static string GetBinaryImportCommand(IReadOnlyList<ColumnMetadata> properties, string tableName)
2727
{
2828
var sql = new StringBuilder();
2929
sql.Append($"COPY {tableName} (");
@@ -39,18 +39,17 @@ protected override async Task BulkInsert<T>(
3939
TableMetadata tableInfo,
4040
IEnumerable<T> entities,
4141
string tableName,
42-
IReadOnlyList<PropertyMetadata> properties,
42+
IReadOnlyList<ColumnMetadata> columns,
4343
BulkInsertOptions options,
4444
CancellationToken ctk)
4545
{
4646
var connection = (NpgsqlConnection)context.Database.GetDbConnection();
47-
48-
var importCommand = GetBinaryImportCommand(properties, tableName);
47+
var command = GetBinaryImportCommand(columns, tableName);
4948

5049
var writer = sync
5150
// ReSharper disable once MethodHasAsyncOverloadWithCancellation
52-
? connection.BeginBinaryImport(importCommand)
53-
: await connection.BeginBinaryImportAsync(importCommand, ctk);
51+
? connection.BeginBinaryImport(command)
52+
: await connection.BeginBinaryImportAsync(command, ctk);
5453

5554
foreach (var entity in entities)
5655
{
@@ -64,9 +63,9 @@ protected override async Task BulkInsert<T>(
6463
await writer.StartRowAsync(ctk);
6564
}
6665

67-
foreach (var property in properties)
66+
foreach (var column in columns)
6867
{
69-
var value = property.GetValue(entity);
68+
var value = column.GetValue(entity);
7069

7170
if (sync)
7271
{

src/PhenX.EntityFrameworkCore.BulkInsert.PostgreSql/PostgreSqlDialectBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ internal class PostgreSqlDialectBuilder : SqlDialectBuilder
1111
protected override string OpenDelimiter => "\"";
1212
protected override string CloseDelimiter => "\"";
1313

14-
public override string CreateTableCopySql(string tempNameName, TableMetadata tableInfo, IReadOnlyList<PropertyMetadata> columns)
14+
public override string CreateTableCopySql(string tempNameName, TableMetadata tableInfo, IReadOnlyList<ColumnMetadata> columns)
1515
{
1616
return $"CREATE TEMPORARY TABLE {tempNameName} AS TABLE {tableInfo.QuotedTableName} WITH NO DATA;";
1717
}

src/PhenX.EntityFrameworkCore.BulkInsert.SqlServer/SqlServerBulkInsertProvider.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ protected override async Task BulkInsert<T>(
3131
TableMetadata tableInfo,
3232
IEnumerable<T> entities,
3333
string tableName,
34-
IReadOnlyList<PropertyMetadata> properties,
34+
IReadOnlyList<ColumnMetadata> columns,
3535
BulkInsertOptions options,
3636
CancellationToken ctk)
3737
{
@@ -43,19 +43,19 @@ protected override async Task BulkInsert<T>(
4343
bulkCopy.BatchSize = options.BatchSize ?? 50_000;
4444
bulkCopy.BulkCopyTimeout = options.GetCopyTimeoutInSeconds();
4545

46-
foreach (var prop in properties)
46+
foreach (var column in columns)
4747
{
48-
bulkCopy.ColumnMappings.Add(prop.Name, prop.ColumnName);
48+
bulkCopy.ColumnMappings.Add(column.PropertyName, column.ColumnName);
4949
}
5050

5151
if (sync)
5252
{
5353
// ReSharper disable once MethodHasAsyncOverloadWithCancellation
54-
bulkCopy.WriteToServer(new EnumerableDataReader<T>(entities, properties));
54+
bulkCopy.WriteToServer(new EnumerableDataReader<T>(entities, columns));
5555
}
5656
else
5757
{
58-
await bulkCopy.WriteToServerAsync(new EnumerableDataReader<T>(entities, properties), ctk);
58+
await bulkCopy.WriteToServerAsync(new EnumerableDataReader<T>(entities, columns), ctk);
5959
}
6060
}
6161
}

src/PhenX.EntityFrameworkCore.BulkInsert.SqlServer/SqlServerDialectBuilder.cs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ internal class SqlServerDialectBuilder : SqlDialectBuilder
1414

1515
protected override bool SupportsMoveRows => false;
1616

17-
public override string CreateTableCopySql(string tempTableName, TableMetadata tableInfo, IReadOnlyList<PropertyMetadata> columns)
17+
public override string CreateTableCopySql(string tempTableName, TableMetadata tableInfo, IReadOnlyList<ColumnMetadata> columns)
1818
{
1919
var q = new StringBuilder();
2020
q.Append($"CREATE TABLE {tempTableName} (");
@@ -37,8 +37,8 @@ public override string CreateTableCopySql(string tempTableName, TableMetadata ta
3737
public override string BuildMoveDataSql<T>(
3838
TableMetadata target,
3939
string source,
40-
IReadOnlyList<PropertyMetadata> insertedProperties,
41-
IReadOnlyList<PropertyMetadata> returnedProperties,
40+
IReadOnlyList<ColumnMetadata> insertedColumns,
41+
IReadOnlyList<ColumnMetadata> returnedColumns,
4242
BulkInsertOptions options,
4343
OnConflictOptions? onConflict = null)
4444
{
@@ -69,9 +69,9 @@ public override string BuildMoveDataSql<T>(
6969
q.AppendLine($"MERGE INTO {target.QuotedTableName} AS TARGET");
7070

7171
q.Append("USING (SELECT ");
72-
q.AppendColumns(insertedProperties);
72+
q.AppendColumns(insertedColumns);
7373
q.Append($" FROM {source}) AS SOURCE (");
74-
q.AppendColumns(insertedProperties);
74+
q.AppendColumns(insertedColumns);
7575
q.AppendLine(")");
7676

7777
q.Append("ON ");
@@ -80,25 +80,25 @@ public override string BuildMoveDataSql<T>(
8080

8181
if (onConflictTyped.Update != null)
8282
{
83-
var properties = target.GetProperties(false);
83+
var columns = target.GetColumns(false);
8484

8585
q.AppendLine($"WHEN MATCHED THEN UPDATE SET ");
86-
q.AppendJoin(", ", GetUpdates(target, properties, onConflictTyped.Update));
86+
q.AppendJoin(", ", GetUpdates(target, columns, onConflictTyped.Update));
8787
q.AppendLine();
8888
}
8989

9090
q.Append($"WHEN NOT MATCHED THEN INSERT (");
91-
q.AppendColumns(insertedProperties);
91+
q.AppendColumns(insertedColumns);
9292
q.AppendLine(")");
9393

9494
q.Append("VALUES (");
95-
q.AppendJoin(", ", insertedProperties, (b, col) => b.Append($"SOURCE.{col.QuotedColumName}"));
95+
q.AppendJoin(", ", insertedColumns, (b, col) => b.Append($"SOURCE.{col.QuotedColumName}"));
9696
q.AppendLine(")");
9797

98-
if (returnedProperties.Count != 0)
98+
if (returnedColumns.Count != 0)
9999
{
100100
q.Append("OUTPUT ");
101-
q.AppendJoin($", ", returnedProperties, (b, col) => b.Append($"INSERTED.{col.QuotedColumName} AS {col.QuotedColumName}"));
101+
q.AppendJoin($", ", returnedColumns, (b, col) => b.Append($"INSERTED.{col.QuotedColumName} AS {col.QuotedColumName}"));
102102
q.AppendLine();
103103
}
104104
}
@@ -107,18 +107,18 @@ public override string BuildMoveDataSql<T>(
107107
else
108108
{
109109
q.Append($"INSERT INTO {target.QuotedTableName} (");
110-
q.AppendColumns(insertedProperties);
110+
q.AppendColumns(insertedColumns);
111111
q.AppendLine(")");
112112

113-
if (returnedProperties.Count != 0)
113+
if (returnedColumns.Count != 0)
114114
{
115115
q.Append("OUTPUT ");
116-
q.AppendJoin($", ", returnedProperties, (b, col) => b.Append($"INSERTED.{col.QuotedColumName} AS {col.QuotedColumName}"));
116+
q.AppendJoin($", ", returnedColumns, (b, col) => b.Append($"INSERTED.{col.QuotedColumName} AS {col.QuotedColumName}"));
117117
q.AppendLine();
118118
}
119119

120120
q.Append("SELECT ");
121-
q.AppendColumns(insertedProperties);
121+
q.AppendColumns(insertedColumns);
122122
q.AppendLine();
123123
q.Append($"FROM {source}");
124124
q.AppendLine();

src/PhenX.EntityFrameworkCore.BulkInsert.Sqlite/SqliteBulkInsertProvider.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ private static SqliteType GetSqliteType(Type clrType)
8181
private static DbCommand GetInsertCommand(
8282
DbContext context,
8383
string tableName,
84-
IReadOnlyList<PropertyMetadata> columns,
84+
IReadOnlyList<ColumnMetadata> columns,
8585
SqliteType[] columnTypes,
8686
StringBuilder sb,
8787
int batchSize)
@@ -136,19 +136,19 @@ protected override async Task BulkInsert<T>(
136136
TableMetadata tableInfo,
137137
IEnumerable<T> entities,
138138
string tableName,
139-
IReadOnlyList<PropertyMetadata> properties,
139+
IReadOnlyList<ColumnMetadata> columns,
140140
BulkInsertOptions options,
141141
CancellationToken ctk
142142
) where T : class
143143
{
144144
const int maxParams = 1000;
145145
var batchSize = options.BatchSize ?? 5;
146-
batchSize = Math.Min(batchSize, maxParams / properties.Count);
146+
batchSize = Math.Min(batchSize, maxParams / columns.Count);
147147

148148
// The StringBuilder can be resuse between the batches.
149149
var sb = new StringBuilder();
150150

151-
var columnList = tableInfo.GetProperties(options.CopyGeneratedColumns);
151+
var columnList = tableInfo.GetColumns(options.CopyGeneratedColumns);
152152
var columnTypes = columnList.Select(c => GetSqliteType(c.ProviderClrType ?? c.ClrType)).ToArray();
153153

154154
await using var insertCommand =
@@ -165,7 +165,7 @@ CancellationToken ctk
165165
// Full chunks
166166
if (chunk.Length == batchSize)
167167
{
168-
FillValues(chunk, insertCommand.Parameters, properties);
168+
FillValues(chunk, insertCommand.Parameters, columns);
169169
await ExecuteCommand(sync, insertCommand, ctk);
170170
}
171171
// Last chunk
@@ -180,7 +180,7 @@ CancellationToken ctk
180180
sb,
181181
chunk.Length);
182182

183-
FillValues(chunk, partialInsertCommand.Parameters, properties);
183+
FillValues(chunk, partialInsertCommand.Parameters, columns);
184184
await ExecuteCommand(sync, partialInsertCommand, ctk);
185185
}
186186
}
@@ -199,14 +199,14 @@ private static async Task ExecuteCommand(bool sync, DbCommand insertCommand, Can
199199
}
200200
}
201201

202-
private static void FillValues<T>(T[] chunk, DbParameterCollection parameters, IReadOnlyList<PropertyMetadata> properties) where T : class
202+
private static void FillValues<T>(T[] chunk, DbParameterCollection parameters, IReadOnlyList<ColumnMetadata> columns) where T : class
203203
{
204204
var p = 0;
205205
foreach (var entity in chunk)
206206
{
207-
foreach (var property in properties)
207+
foreach (var column in columns)
208208
{
209-
var value = property.GetValue(entity);
209+
var value = column.GetValue(entity);
210210
parameters[p].Value = value;
211211
p++;
212212
}

src/PhenX.EntityFrameworkCore.BulkInsert.Sqlite/SqliteDialectBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ internal class SqliteDialectBuilder : SqlDialectBuilder
1111
protected override bool SupportsMoveRows => false;
1212

1313
/// <inheritdoc />
14-
public override string CreateTableCopySql(string tempNameName, TableMetadata tableInfo, IReadOnlyList<PropertyMetadata> columns)
14+
public override string CreateTableCopySql(string tempNameName, TableMetadata tableInfo, IReadOnlyList<ColumnMetadata> columns)
1515
{
1616
return $"CREATE TEMP TABLE {tempNameName} AS SELECT * FROM {tableInfo.QuotedTableName} WHERE 0;";
1717
}

src/PhenX.EntityFrameworkCore.BulkInsert/BulkInsertProviderBase.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -129,13 +129,13 @@ private async Task<string> PerformBulkInsertAsync<T>(
129129
? await CreateTableCopyAsync<T>(sync, context, options, tableInfo, ctk)
130130
: tableInfo.QuotedTableName;
131131

132-
var properties = tableInfo.GetProperties(options.CopyGeneratedColumns);
132+
var columns = tableInfo.GetColumns(options.CopyGeneratedColumns);
133133

134134
using var activity = Telemetry.ActivitySource.StartActivity("Insert");
135135
activity?.AddTag("tempTable", tempTableRequired);
136136
activity?.AddTag("synchronous", sync);
137137

138-
await BulkInsert(false, context, tableInfo, entities, tableName, properties, options, ctk);
138+
await BulkInsert(false, context, tableInfo, entities, tableName, columns, options, ctk);
139139
return tableName;
140140
}
141141

@@ -148,7 +148,7 @@ protected abstract Task BulkInsert<T>(
148148
TableMetadata tableInfo,
149149
IEnumerable<T> entities,
150150
string tableName,
151-
IReadOnlyList<PropertyMetadata> properties,
151+
IReadOnlyList<ColumnMetadata> columns,
152152
BulkInsertOptions options,
153153
CancellationToken ctk) where T : class;
154154

@@ -160,7 +160,7 @@ protected async Task<string> CreateTableCopyAsync<T>(
160160
CancellationToken ctk) where T : class
161161
{
162162
var tempTableName = SqlDialect.QuoteTableName(null, GetTempTableName(tableInfo.TableName));
163-
var tempColumns = tableInfo.GetProperties(options.CopyGeneratedColumns);
163+
var tempColumns = tableInfo.GetColumns(options.CopyGeneratedColumns);
164164

165165
var query = SqlDialect.CreateTableCopySql(tempTableName, tableInfo, tempColumns);
166166

@@ -195,8 +195,8 @@ protected virtual async Task AddBulkInsertIdColumn<T>(
195195
SqlDialect.BuildMoveDataSql<T>(
196196
tableInfo,
197197
tempTableName,
198-
tableInfo.GetProperties(options.CopyGeneratedColumns),
199-
returnData ? tableInfo.GetProperties() : [],
198+
tableInfo.GetColumns(options.CopyGeneratedColumns),
199+
returnData ? tableInfo.GetColumns() : [],
200200
options,
201201
onConflict);
202202

0 commit comments

Comments
 (0)