Skip to content

Commit 5ab48be

Browse files
committed
Use Npgsql's new CloneWithAsync
Closes #3303
1 parent 222c13a commit 5ab48be

3 files changed

Lines changed: 11 additions & 4 deletions

File tree

src/EFCore.PG/Storage/Internal/INpgsqlRelationalConnection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ public interface INpgsqlRelationalConnection : IRelationalConnection
2222
/// any release. You should only use it directly in your code with extreme caution and knowing that
2323
/// doing so can result in application failures when updating to a new Entity Framework Core release.
2424
/// </summary>
25-
INpgsqlRelationalConnection CloneWith(string connectionString);
25+
ValueTask<INpgsqlRelationalConnection> CloneWith(string connectionString, bool async, CancellationToken cancellationToken = default);
2626
}

src/EFCore.PG/Storage/Internal/NpgsqlDatabaseCreator.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,9 @@ private async Task<bool> Exists(bool async, CancellationToken cancellationToken
208208
var unpooledCsb = new NpgsqlConnectionStringBuilder(_connection.ConnectionString) { Pooling = false, Multiplexing = false };
209209

210210
using var _ = new TransactionScope(TransactionScopeOption.Suppress, TransactionScopeAsyncFlowOption.Enabled);
211-
var unpooledRelationalConnection = _connection.CloneWith(unpooledCsb.ToString());
211+
var unpooledRelationalConnection =
212+
await _connection.CloneWith(unpooledCsb.ToString(), async, cancellationToken).ConfigureAwait(false);
213+
212214
try
213215
{
214216
if (async)

src/EFCore.PG/Storage/Internal/NpgsqlRelationalConnection.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,9 +226,14 @@ public override Transaction? CurrentAmbientTransaction
226226
/// any release. You should only use it directly in your code with extreme caution and knowing that
227227
/// doing so can result in application failures when updating to a new Entity Framework Core release.
228228
/// </summary>
229-
public virtual INpgsqlRelationalConnection CloneWith(string connectionString)
229+
public virtual async ValueTask<INpgsqlRelationalConnection> CloneWith(
230+
string connectionString,
231+
bool async,
232+
CancellationToken cancellationToken = default)
230233
{
231-
var clonedDbConnection = DbConnection.CloneWith(connectionString);
234+
var clonedDbConnection = async
235+
? await DbConnection.CloneWithAsync(connectionString, cancellationToken).ConfigureAwait(false)
236+
: DbConnection.CloneWith(connectionString);
232237

233238
var relationalOptions = RelationalOptionsExtension.Extract(Dependencies.ContextOptions)
234239
.WithConnectionString(null)

0 commit comments

Comments
 (0)