Skip to content

Commit 11ae273

Browse files
committed
ConnectionContext
1 parent 5c89d8e commit 11ae273

File tree

43 files changed

+550
-618
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+550
-618
lines changed

src/EntityFrameworkCore.SqlServer.SimpleBulks.Benchmarks/Database/CompositeKeyRow.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System.ComponentModel.DataAnnotations;
2-
using System.ComponentModel.DataAnnotations.Schema;
1+
using System.ComponentModel.DataAnnotations.Schema;
32

43
namespace EntityFrameworkCore.SqlServer.SimpleBulks.Benchmarks.Database;
54

src/EntityFrameworkCore.SqlServer.SimpleBulks.Benchmarks/Database/ConfigurationEntry.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System;
2-
using System.ComponentModel.DataAnnotations;
1+
using System.ComponentModel.DataAnnotations;
32
using System.ComponentModel.DataAnnotations.Schema;
43

54
namespace EntityFrameworkCore.SqlServer.SimpleBulks.Benchmarks.Database;

src/EntityFrameworkCore.SqlServer.SimpleBulks.DbContextExtensionsTests/Database/ConfigurationEntry.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System;
2-
using System.ComponentModel.DataAnnotations;
1+
using System.ComponentModel.DataAnnotations;
32
using System.ComponentModel.DataAnnotations.Schema;
43

54
namespace EntityFrameworkCore.SqlServer.SimpleBulks.DbContextExtensionsTests.Database;

src/EntityFrameworkCore.SqlServer.SimpleBulks.Tests/Database/ConfigurationEntry.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System;
2-
using System.ComponentModel.DataAnnotations;
1+
using System.ComponentModel.DataAnnotations;
32
using System.ComponentModel.DataAnnotations.Schema;
43

54
namespace EntityFrameworkCore.SqlServer.SimpleBulks.Tests.Database;

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

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using EntityFrameworkCore.SqlServer.SimpleBulks.Extensions;
2-
using Microsoft.Data.SqlClient;
32
using System;
43
using System.Collections.Generic;
54
using System.Linq;
@@ -14,13 +13,11 @@ public class BulkDeleteBuilder<T>
1413
private TableInfor _table;
1514
private IEnumerable<string> _idColumns;
1615
private BulkDeleteOptions _options;
17-
private readonly SqlConnection _connection;
18-
private readonly SqlTransaction _transaction;
16+
private readonly ConnectionContext _connectionContext;
1917

20-
public BulkDeleteBuilder(SqlConnection connection, SqlTransaction transaction)
18+
public BulkDeleteBuilder(ConnectionContext connectionContext)
2119
{
22-
_connection = connection;
23-
_transaction = transaction;
20+
_connectionContext = connectionContext;
2421
}
2522

2623
public BulkDeleteBuilder<T> ToTable(TableInfor table)
@@ -88,27 +85,27 @@ public BulkDeleteResult Execute(IEnumerable<T> data)
8885

8986
var deleteStatement = $"DELETE a FROM {_table.SchemaQualifiedTableName} a JOIN {temptableName} b ON " + joinCondition;
9087

91-
_connection.EnsureOpen();
88+
_connectionContext.Connection.EnsureOpen();
9289

9390
Log($"Begin creating temp table:{Environment.NewLine}{sqlCreateTemptable}");
9491

95-
using (var createTemptableCommand = _connection.CreateTextCommand(_transaction, sqlCreateTemptable, _options))
92+
using (var createTemptableCommand = _connectionContext.Connection.CreateTextCommand(_connectionContext.Transaction, sqlCreateTemptable, _options))
9693
{
9794
createTemptableCommand.ExecuteNonQuery();
9895
}
9996

10097
Log("End creating temp table.");
10198

102-
99+
103100
Log($"Begin executing SqlBulkCopy. TableName: {temptableName}");
104101

105-
dataTable.SqlBulkCopy(temptableName, null, _connection, _transaction, _options);
102+
dataTable.SqlBulkCopy(temptableName, null, _connectionContext.Connection, _connectionContext.Transaction, _options);
106103

107104
Log("End executing SqlBulkCopy.");
108105

109106
Log($"Begin deleting:{Environment.NewLine}{deleteStatement}");
110107

111-
using var deleteCommand = _connection.CreateTextCommand(_transaction, deleteStatement, _options);
108+
using var deleteCommand = _connectionContext.Connection.CreateTextCommand(_connectionContext.Transaction, deleteStatement, _options);
112109

113110
var affectedRows = deleteCommand.ExecuteNonQuery();
114111

@@ -131,11 +128,11 @@ public BulkDeleteResult SingleDelete(T dataToDelete)
131128

132129
Log($"Begin deleting:{Environment.NewLine}{deleteStatement}");
133130

134-
using var deleteCommand = _connection.CreateTextCommand(_transaction, deleteStatement, _options);
131+
using var deleteCommand = _connectionContext.Connection.CreateTextCommand(_connectionContext.Transaction, deleteStatement, _options);
135132

136133
_table.CreateSqlParameters(deleteCommand, dataToDelete, _idColumns).ForEach(x => deleteCommand.Parameters.Add(x));
137134

138-
_connection.EnsureOpen();
135+
_connectionContext.Connection.EnsureOpen();
139136

140137
var affectedRows = deleteCommand.ExecuteNonQuery();
141138

@@ -172,11 +169,11 @@ public async Task<BulkDeleteResult> ExecuteAsync(IEnumerable<T> data, Cancellati
172169

173170
var deleteStatement = $"DELETE a FROM {_table.SchemaQualifiedTableName} a JOIN {temptableName} b ON " + joinCondition;
174171

175-
await _connection.EnsureOpenAsync(cancellationToken);
172+
await _connectionContext.Connection.EnsureOpenAsync(cancellationToken);
176173

177174
Log($"Begin creating temp table:{Environment.NewLine}{sqlCreateTemptable}");
178175

179-
using (var createTemptableCommand = _connection.CreateTextCommand(_transaction, sqlCreateTemptable, _options))
176+
using (var createTemptableCommand = _connectionContext.Connection.CreateTextCommand(_connectionContext.Transaction, sqlCreateTemptable, _options))
180177
{
181178
await createTemptableCommand.ExecuteNonQueryAsync(cancellationToken);
182179
}
@@ -185,13 +182,13 @@ public async Task<BulkDeleteResult> ExecuteAsync(IEnumerable<T> data, Cancellati
185182

186183
Log($"Begin executing SqlBulkCopy. TableName: {temptableName}");
187184

188-
await dataTable.SqlBulkCopyAsync(temptableName, null, _connection, _transaction, _options, cancellationToken);
185+
await dataTable.SqlBulkCopyAsync(temptableName, null, _connectionContext.Connection, _connectionContext.Transaction, _options, cancellationToken);
189186

190187
Log("End executing SqlBulkCopy.");
191188

192189
Log($"Begin deleting:{Environment.NewLine}{deleteStatement}");
193190

194-
using var deleteCommand = _connection.CreateTextCommand(_transaction, deleteStatement, _options);
191+
using var deleteCommand = _connectionContext.Connection.CreateTextCommand(_connectionContext.Transaction, deleteStatement, _options);
195192

196193
var affectedRows = await deleteCommand.ExecuteNonQueryAsync(cancellationToken);
197194

@@ -214,11 +211,11 @@ public async Task<BulkDeleteResult> SingleDeleteAsync(T dataToDelete, Cancellati
214211

215212
Log($"Begin deleting:{Environment.NewLine}{deleteStatement}");
216213

217-
using var deleteCommand = _connection.CreateTextCommand(_transaction, deleteStatement, _options);
214+
using var deleteCommand = _connectionContext.Connection.CreateTextCommand(_connectionContext.Transaction, deleteStatement, _options);
218215

219216
_table.CreateSqlParameters(deleteCommand, dataToDelete, _idColumns).ForEach(x => deleteCommand.Parameters.Add(x));
220217

221-
await _connection.EnsureOpenAsync(cancellationToken);
218+
await _connectionContext.Connection.EnsureOpenAsync(cancellationToken);
222219

223220
var affectedRows = await deleteCommand.ExecuteNonQueryAsync(cancellationToken);
224221

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@ public static class DbContextAsyncExtensions
1111
{
1212
public static Task<BulkDeleteResult> BulkDeleteAsync<T>(this DbContext dbContext, IEnumerable<T> data, Action<BulkDeleteOptions> configureOptions = null, CancellationToken cancellationToken = default)
1313
{
14-
var connection = dbContext.GetSqlConnection();
15-
var transaction = dbContext.GetCurrentSqlTransaction();
14+
var connectionContext = dbContext.GetConnectionContext();
1615

17-
return new BulkDeleteBuilder<T>(connection, transaction)
16+
return new BulkDeleteBuilder<T>(connectionContext)
1817
.WithId(dbContext.GetPrimaryKeys(typeof(T)))
1918
.ToTable(dbContext.GetTableInfor(typeof(T)))
2019
.ConfigureBulkOptions(configureOptions)

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@ public static class DbContextExtensions
99
{
1010
public static BulkDeleteResult BulkDelete<T>(this DbContext dbContext, IEnumerable<T> data, Action<BulkDeleteOptions> configureOptions = null)
1111
{
12-
var connection = dbContext.GetSqlConnection();
13-
var transaction = dbContext.GetCurrentSqlTransaction();
12+
var connectionContext = dbContext.GetConnectionContext();
1413

15-
return new BulkDeleteBuilder<T>(connection, transaction)
14+
return new BulkDeleteBuilder<T>(connectionContext)
1615
.WithId(dbContext.GetPrimaryKeys(typeof(T)))
1716
.ToTable(dbContext.GetTableInfor(typeof(T)))
1817
.ConfigureBulkOptions(configureOptions)
Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using Microsoft.Data.SqlClient;
2-
using System;
1+
using System;
32
using System.Collections.Generic;
43
using System.Linq.Expressions;
54
using System.Threading;
@@ -13,59 +12,59 @@ public static Task<BulkDeleteResult> BulkDeleteAsync<T>(this ConnectionContext c
1312
{
1413
var table = TableMapper.Resolve(typeof(T));
1514

16-
return new BulkDeleteBuilder<T>(connectionContext.Connection, connectionContext.Transaction)
17-
.WithId(idSelector)
18-
.ToTable(table)
19-
.ConfigureBulkOptions(configureOptions)
20-
.ExecuteAsync(data, cancellationToken);
15+
return new BulkDeleteBuilder<T>(connectionContext)
16+
.WithId(idSelector)
17+
.ToTable(table)
18+
.ConfigureBulkOptions(configureOptions)
19+
.ExecuteAsync(data, cancellationToken);
2120
}
2221

2322
public static Task<BulkDeleteResult> BulkDeleteAsync<T>(this ConnectionContext connectionContext, IEnumerable<T> data, string idColumn, Action<BulkDeleteOptions> configureOptions = null, CancellationToken cancellationToken = default)
2423
{
2524
var table = TableMapper.Resolve(typeof(T));
2625

27-
return new BulkDeleteBuilder<T>(connectionContext.Connection, connectionContext.Transaction)
28-
.WithId(idColumn)
29-
.ToTable(table)
30-
.ConfigureBulkOptions(configureOptions)
26+
return new BulkDeleteBuilder<T>(connectionContext)
27+
.WithId(idColumn)
28+
.ToTable(table)
29+
.ConfigureBulkOptions(configureOptions)
3130
.ExecuteAsync(data, cancellationToken);
3231
}
3332

3433
public static Task<BulkDeleteResult> BulkDeleteAsync<T>(this ConnectionContext connectionContext, IEnumerable<T> data, IEnumerable<string> idColumns, Action<BulkDeleteOptions> configureOptions = null, CancellationToken cancellationToken = default)
3534
{
3635
var table = TableMapper.Resolve(typeof(T));
3736

38-
return new BulkDeleteBuilder<T>(connectionContext.Connection, connectionContext.Transaction)
39-
.WithId(idColumns)
40-
.ToTable(table)
41-
.ConfigureBulkOptions(configureOptions)
42-
.ExecuteAsync(data, cancellationToken);
43-
}
37+
return new BulkDeleteBuilder<T>(connectionContext)
38+
.WithId(idColumns)
39+
.ToTable(table)
40+
.ConfigureBulkOptions(configureOptions)
41+
.ExecuteAsync(data, cancellationToken);
42+
}
4443

4544
public static Task<BulkDeleteResult> BulkDeleteAsync<T>(this ConnectionContext connectionContext, IEnumerable<T> data, TableInfor table, Expression<Func<T, object>> idSelector, Action<BulkDeleteOptions> configureOptions = null, CancellationToken cancellationToken = default)
4645
{
47-
return new BulkDeleteBuilder<T>(connectionContext.Connection, connectionContext.Transaction)
48-
.WithId(idSelector)
49-
.ToTable(table)
50-
.ConfigureBulkOptions(configureOptions)
51-
.ExecuteAsync(data, cancellationToken);
46+
return new BulkDeleteBuilder<T>(connectionContext)
47+
.WithId(idSelector)
48+
.ToTable(table)
49+
.ConfigureBulkOptions(configureOptions)
50+
.ExecuteAsync(data, cancellationToken);
5251
}
5352

5453
public static Task<BulkDeleteResult> BulkDeleteAsync<T>(this ConnectionContext connectionContext, IEnumerable<T> data, TableInfor table, string idColumn, Action<BulkDeleteOptions> configureOptions = null, CancellationToken cancellationToken = default)
5554
{
56-
return new BulkDeleteBuilder<T>(connectionContext.Connection, connectionContext.Transaction)
57-
.WithId(idColumn)
58-
.ToTable(table)
59-
.ConfigureBulkOptions(configureOptions)
60-
.ExecuteAsync(data, cancellationToken);
55+
return new BulkDeleteBuilder<T>(connectionContext)
56+
.WithId(idColumn)
57+
.ToTable(table)
58+
.ConfigureBulkOptions(configureOptions)
59+
.ExecuteAsync(data, cancellationToken);
6160
}
6261

63-
public static Task<BulkDeleteResult> BulkDeleteAsync<T>(this ConnectionContext connectionContext, IEnumerable<T> data, TableInfor table, IEnumerable<string> idColumns, Action<BulkDeleteOptions> configureOptions = null, CancellationToken cancellationToken = default)
62+
public static Task<BulkDeleteResult> BulkDeleteAsync<T>(this ConnectionContext connectionContext, IEnumerable<T> data, TableInfor table, IEnumerable<string> idColumns, Action<BulkDeleteOptions> configureOptions = null, CancellationToken cancellationToken = default)
6463
{
65-
return new BulkDeleteBuilder<T>(connectionContext.Connection, connectionContext.Transaction)
64+
return new BulkDeleteBuilder<T>(connectionContext)
6665
.WithId(idColumns)
6766
.ToTable(table)
6867
.ConfigureBulkOptions(configureOptions)
69-
.ExecuteAsync(data, cancellationToken);
68+
.ExecuteAsync(data, cancellationToken);
7069
}
7170
}
Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using Microsoft.Data.SqlClient;
2-
using System;
1+
using System;
32
using System.Collections.Generic;
43
using System.Linq.Expressions;
54

@@ -11,59 +10,59 @@ public static BulkDeleteResult BulkDelete<T>(this ConnectionContext connectionCo
1110
{
1211
var table = TableMapper.Resolve(typeof(T));
1312

14-
return new BulkDeleteBuilder<T>(connectionContext.Connection, connectionContext.Transaction)
15-
.WithId(idSelector)
16-
.ToTable(table)
17-
.ConfigureBulkOptions(configureOptions)
18-
.Execute(data);
13+
return new BulkDeleteBuilder<T>(connectionContext)
14+
.WithId(idSelector)
15+
.ToTable(table)
16+
.ConfigureBulkOptions(configureOptions)
17+
.Execute(data);
1918
}
2019

2120
public static BulkDeleteResult BulkDelete<T>(this ConnectionContext connectionContext, IEnumerable<T> data, string idColumn, Action<BulkDeleteOptions> configureOptions = null)
2221
{
2322
var table = TableMapper.Resolve(typeof(T));
2423

25-
return new BulkDeleteBuilder<T>(connectionContext.Connection, connectionContext.Transaction)
26-
.WithId(idColumn)
24+
return new BulkDeleteBuilder<T>(connectionContext)
25+
.WithId(idColumn)
2726
.ToTable(table)
2827
.ConfigureBulkOptions(configureOptions)
2928
.Execute(data);
3029
}
3130

3231
public static BulkDeleteResult BulkDelete<T>(this ConnectionContext connectionContext, IEnumerable<T> data, IEnumerable<string> idColumns, Action<BulkDeleteOptions> configureOptions = null)
3332
{
34-
var table = TableMapper.Resolve(typeof(T));
33+
var table = TableMapper.Resolve(typeof(T));
3534

36-
return new BulkDeleteBuilder<T>(connectionContext.Connection, connectionContext.Transaction)
35+
return new BulkDeleteBuilder<T>(connectionContext)
3736
.WithId(idColumns)
38-
.ToTable(table)
37+
.ToTable(table)
3938
.ConfigureBulkOptions(configureOptions)
4039
.Execute(data);
4140
}
4241

4342
public static BulkDeleteResult BulkDelete<T>(this ConnectionContext connectionContext, IEnumerable<T> data, TableInfor table, Expression<Func<T, object>> idSelector, Action<BulkDeleteOptions> configureOptions = null)
4443
{
45-
return new BulkDeleteBuilder<T>(connectionContext.Connection, connectionContext.Transaction)
46-
.WithId(idSelector)
47-
.ToTable(table)
48-
.ConfigureBulkOptions(configureOptions)
49-
.Execute(data);
44+
return new BulkDeleteBuilder<T>(connectionContext)
45+
.WithId(idSelector)
46+
.ToTable(table)
47+
.ConfigureBulkOptions(configureOptions)
48+
.Execute(data);
5049
}
5150

5251
public static BulkDeleteResult BulkDelete<T>(this ConnectionContext connectionContext, IEnumerable<T> data, TableInfor table, string idColumn, Action<BulkDeleteOptions> configureOptions = null)
5352
{
54-
return new BulkDeleteBuilder<T>(connectionContext.Connection, connectionContext.Transaction)
55-
.WithId(idColumn)
56-
.ToTable(table)
57-
.ConfigureBulkOptions(configureOptions)
58-
.Execute(data);
53+
return new BulkDeleteBuilder<T>(connectionContext)
54+
.WithId(idColumn)
55+
.ToTable(table)
56+
.ConfigureBulkOptions(configureOptions)
57+
.Execute(data);
5958
}
6059

6160
public static BulkDeleteResult BulkDelete<T>(this ConnectionContext connectionContext, IEnumerable<T> data, TableInfor table, IEnumerable<string> idColumns, Action<BulkDeleteOptions> configureOptions = null)
62-
{
63-
return new BulkDeleteBuilder<T>(connectionContext.Connection, connectionContext.Transaction)
61+
{
62+
return new BulkDeleteBuilder<T>(connectionContext)
6463
.WithId(idColumns)
6564
.ToTable(table)
66-
.ConfigureBulkOptions(configureOptions)
65+
.ConfigureBulkOptions(configureOptions)
6766
.Execute(data);
6867
}
6968
}

0 commit comments

Comments
 (0)