Skip to content

Commit f20a605

Browse files
committed
Initial Async Support
1 parent 364d267 commit f20a605

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

src/EntityFrameworkCore.SqlServer.SimpleBulks/TempTable/TempTableBuilder.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,28 @@ private void Log(string message)
114114
_options?.LogTo?.Invoke($"{DateTimeOffset.Now:yyyy-MM-dd HH:mm:ss.fff zzz} [TempTable]: {message}");
115115
}
116116

117-
public Task<string> ExecuteAsync(CancellationToken cancellationToken = default)
117+
public async Task<string> ExecuteAsync(CancellationToken cancellationToken = default)
118118
{
119-
return Task.FromResult(Execute());
119+
var tempTableName = $"[#{GetTableName()}]";
120+
var dataTable = await _data.ToDataTableAsync(_columnNames, cancellationToken: cancellationToken);
121+
var sqlCreateTempTable = dataTable.GenerateTableDefinition(tempTableName, _columnNameMappings, _columnTypeMappings);
122+
123+
Log($"Begin creating temp table:{Environment.NewLine}{sqlCreateTempTable}");
124+
125+
_connection.EnsureOpen();
126+
using (var createTempTableCommand = _connection.CreateTextCommand(_transaction, sqlCreateTempTable))
127+
{
128+
await createTempTableCommand.ExecuteNonQueryAsync(cancellationToken);
129+
}
130+
131+
Log("End creating temp table.");
132+
133+
Log($"Begin executing SqlBulkCopy. TableName: {tempTableName}");
134+
135+
await dataTable.SqlBulkCopyAsync(tempTableName, _columnNameMappings, _connection, _transaction, cancellationToken: cancellationToken);
136+
137+
Log("End executing SqlBulkCopy.");
138+
139+
return tempTableName;
120140
}
121141
}

0 commit comments

Comments
 (0)