diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/PhenX.EntityFrameworkCore.BulkInsert.Benchmark.csproj b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/PhenX.EntityFrameworkCore.BulkInsert.Benchmark.csproj
index b359d6d..cff5d4e 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/PhenX.EntityFrameworkCore.BulkInsert.Benchmark.csproj
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/PhenX.EntityFrameworkCore.BulkInsert.Benchmark.csproj
@@ -8,10 +8,10 @@
-
-
-
-
+
+
+
+
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorMySql.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorMySql.cs
index 9504eb5..03ecdd8 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorMySql.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorMySql.cs
@@ -22,7 +22,7 @@ protected override void ConfigureDbContext()
protected override IDatabaseContainer? GetDbContainer()
{
- return new MySqlBuilder()
+ return new MySqlBuilder("mysql:8.0")
.WithCommand("--log-bin-trust-function-creators=1", "--local-infile=1")
.Build();
}
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorOracle.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorOracle.cs
index b6eb92f..24b412e 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorOracle.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorOracle.cs
@@ -25,8 +25,7 @@ protected override void ConfigureDbContext()
protected override IDatabaseContainer? GetDbContainer()
{
- return new OracleBuilder()
- .WithImage("gvenzl/oracle-free:23-slim-faststart")
+ return new OracleBuilder("gvenzl/oracle-free:23-slim-faststart")
.Build();
}
}
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorPostgreSql.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorPostgreSql.cs
index 3bb3595..2cf7410 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorPostgreSql.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorPostgreSql.cs
@@ -25,7 +25,7 @@ protected override void ConfigureDbContext()
protected override IDatabaseContainer? GetDbContainer()
{
- return new PostgreSqlBuilder()
+ return new PostgreSqlBuilder("postgres:15.1")
.WithDatabase("testdb")
.WithUsername("testuser")
.WithPassword("testpassword")
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorSqlServer.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorSqlServer.cs
index 8db3e14..769a825 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorSqlServer.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Providers/LibComparatorSqlServer.cs
@@ -25,6 +25,6 @@ protected override void ConfigureDbContext()
protected override IDatabaseContainer? GetDbContainer()
{
- return new MsSqlBuilder().Build();
+ return new MsSqlBuilder("mcr.microsoft.com/mssql/server:2022-CU14-ubuntu-22.04").Build();
}
}
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/IDbContextFactory.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/IDbContextFactory.cs
new file mode 100644
index 0000000..f295a84
--- /dev/null
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/IDbContextFactory.cs
@@ -0,0 +1,9 @@
+using PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContext;
+
+namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContainer;
+
+public interface IDbContextFactory
+{
+ Task CreateContextAsync(string databaseName)
+ where TDbContext : TestDbContextBase, new();
+}
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainer.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainer.cs
index ac63439..8c396cd 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainer.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainer.cs
@@ -1,5 +1,8 @@
using System.Data.Common;
+using System.Reflection;
+using DotNet.Testcontainers.Builders;
+using DotNet.Testcontainers.Configurations;
using DotNet.Testcontainers.Containers;
using Microsoft.EntityFrameworkCore;
@@ -7,47 +10,42 @@
using PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContext;
-using Xunit;
+using Testcontainers.Xunit;
+
+using Xunit.Abstractions;
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContainer;
-public abstract class TestDbContainer : IAsyncLifetime
+public abstract class TestDbContainer(IMessageSink messageSink) : DbContainerFixture(messageSink), IDbContextFactory
+ where TBuilderEntity : IContainerBuilder, new()
+ where TContainerEntity : IContainer, IDatabaseContainer
{
- private readonly TimeSpan _waitTime = TimeSpan.FromSeconds(30);
- private readonly HashSet _connected = [];
- protected readonly IDatabaseContainer? DbContainer;
+ protected abstract void Configure(DbContextOptionsBuilder optionsBuilder, string databaseName);
+
+ protected abstract TBuilderEntity CreateBuilder();
+
+ protected virtual string DbmsName => typeof(TContainerEntity).Name.Replace("Container", "");
- protected TestDbContainer()
+ protected override TBuilderEntity Configure()
{
- DbContainer = GetDbContainer();
+ var targetFramework = GetType().Assembly.GetCustomAttributes().FirstOrDefault(e => e.Key == "TargetFramework")?.Value ?? "NA";
+ return CreateBuilder()
+ .WithReuse(true)
+ .WithName($"PhenX.EntityFrameworkCore.BulkInsert.Tests.{DbmsName}-{targetFramework}")
+ .WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
}
- protected abstract IDatabaseContainer? GetDbContainer();
-
protected virtual string GetConnectionString(string databaseName)
{
- if (DbContainer == null)
- {
- return string.Empty;
- }
-
- var builder = new DbConnectionStringBuilder()
- {
- ConnectionString = DbContainer.GetConnectionString()
- };
-
+ var builder = DbProviderFactory.CreateConnectionStringBuilder() ?? new DbConnectionStringBuilder();
+ builder.ConnectionString = ConnectionString;
builder["database"] = databaseName;
return builder.ToString();
}
- protected abstract void Configure(DbContextOptionsBuilder optionsBuilder, string databaseName);
-
- public async Task InitializeAsync()
+ protected virtual async Task EnsureDatabaseCreatedAsync(Microsoft.EntityFrameworkCore.DbContext dbContext)
{
- if (DbContainer != null)
- {
- await DbContainer.StartAsync();
- }
+ await dbContext.Database.EnsureCreatedAsync();
}
public async Task CreateContextAsync(string databaseName)
@@ -62,39 +60,8 @@ public async Task CreateContextAsync(string databaseName
}
};
- if (_connected.Add(databaseName))
- {
- await EnsureConnectedAsync(dbContext, databaseName);
- }
-
- try
- {
- await dbContext.Database.EnsureCreatedAsync();
- }
- catch
- {
- // Often fails with SQL server.
- }
+ await EnsureDatabaseCreatedAsync(dbContext);
return dbContext;
}
-
- protected virtual async Task EnsureConnectedAsync(TDbContext context, string databaseName)
- where TDbContext : TestDbContextBase
- {
- using var cts = new CancellationTokenSource(_waitTime);
-
- while (!await context.Database.CanConnectAsync(cts.Token))
- {
- await Task.Delay(100, cts.Token);
- }
- }
-
- public async Task DisposeAsync()
- {
- if (DbContainer != null)
- {
- await DbContainer.DisposeAsync();
- }
- }
}
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerMySql.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerMySql.cs
index 904c616..6cabc1d 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerMySql.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerMySql.cs
@@ -1,12 +1,17 @@
-using DotNet.Testcontainers.Containers;
+using System.Data.Common;
using Microsoft.EntityFrameworkCore;
+using MySqlConnector;
+
using PhenX.EntityFrameworkCore.BulkInsert.MySql;
+using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
+
using Testcontainers.MySql;
using Xunit;
+using Xunit.Abstractions;
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContainer;
@@ -16,16 +21,22 @@ public class TestDbContainerMySqlCollection : ICollectionFixture(messageSink)
{
- protected override IDatabaseContainer? GetDbContainer()
+ private static readonly ServerVersion MySqlServerVersion = ServerVersion.Create(new Version(8, 0), ServerType.MySql);
+
+ public override DbProviderFactory DbProviderFactory => MySqlConnectorFactory.Instance;
+
+ protected override MySqlBuilder CreateBuilder() => new($"{MySqlServerVersion.TypeIdentifier}:{MySqlServerVersion.Version}");
+
+ protected override string DbmsName => MySqlServerVersion.Type.ToString();
+
+ protected override MySqlBuilder Configure()
{
- return new MySqlBuilder()
+ return base.Configure()
.WithCommand("--log-bin-trust-function-creators=1", "--local-infile=1", "--innodb-print-all-deadlocks=ON")
- .WithReuse(true)
.WithUsername("root")
- .WithPassword("root")
- .Build();
+ .WithPassword("root");
}
protected override string GetConnectionString(string databaseName)
@@ -38,18 +49,10 @@ protected override void Configure(DbContextOptionsBuilder optionsBuilder, string
var connectionString = GetConnectionString(databaseName);
optionsBuilder
- .UseMySql(connectionString, ServerVersion.AutoDetect(connectionString), o =>
+ .UseMySql(connectionString, MySqlServerVersion, o =>
{
o.UseNetTopologySuite();
})
.UseBulkInsertMySql();
}
-
- protected override async Task EnsureConnectedAsync(TDbContext context, string databaseName)
- {
- var container = (MySqlContainer)DbContainer!;
-
- await container.ExecScriptAsync($"CREATE DATABASE `{databaseName}`");
- await base.EnsureConnectedAsync(context, databaseName);
- }
}
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerOracle.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerOracle.cs
index 0ccbbaa..6e6d765 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerOracle.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerOracle.cs
@@ -1,12 +1,15 @@
-using DotNet.Testcontainers.Containers;
+using System.Data.Common;
using Microsoft.EntityFrameworkCore;
+using Oracle.ManagedDataAccess.Client;
+
using PhenX.EntityFrameworkCore.BulkInsert.Oracle;
using Testcontainers.Oracle;
using Xunit;
+using Xunit.Abstractions;
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContainer;
@@ -16,32 +19,16 @@ public class TestDbContainerOracleCollection : ICollectionFixture(messageSink)
{
- protected override IDatabaseContainer? GetDbContainer()
- {
- return new OracleBuilder()
- .WithImage("gvenzl/oracle-free:23-slim-faststart")
- .WithReuse(true)
- .Build();
- }
+ public override DbProviderFactory DbProviderFactory => OracleClientFactory.Instance;
+
+ protected override OracleBuilder CreateBuilder() => new("gvenzl/oracle-free:23-slim-faststart");
protected override void Configure(DbContextOptionsBuilder optionsBuilder, string databaseName)
{
optionsBuilder
- .UseOracle(GetConnectionString(databaseName))
+ .UseOracle(ConnectionString)
.UseBulkInsertOracle();
}
-
- protected override string GetConnectionString(string databaseName)
- {
- if (DbContainer == null)
- {
- return string.Empty;
- }
-
- var port = DbContainer.GetMappedPublicPort(1521);
-
- return $"Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = {port})) ) (CONNECT_DATA = (SERVICE_NAME = FREEPDB1) ) );User ID=oracle;Password=oracle";
- }
}
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerPostgreSql.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerPostgreSql.cs
index b03a7cc..89592ec 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerPostgreSql.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerPostgreSql.cs
@@ -1,12 +1,15 @@
-using DotNet.Testcontainers.Containers;
+using System.Data.Common;
using Microsoft.EntityFrameworkCore;
+using Npgsql;
+
using PhenX.EntityFrameworkCore.BulkInsert.PostgreSql;
using Testcontainers.PostgreSql;
using Xunit;
+using Xunit.Abstractions;
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContainer;
@@ -16,18 +19,12 @@ public class TestDbContainerPostgreSqlCollection : ICollectionFixture(messageSink)
{
- protected override IDatabaseContainer? GetDbContainer()
- {
- return new PostgreSqlBuilder()
- .WithImage("postgis/postgis") // Geo GeoSpatial support.
- .WithReuse(true)
- .WithDatabase("testdb")
- .WithUsername("testuser")
- .WithPassword("testpassword")
- .Build();
- }
+ public override DbProviderFactory DbProviderFactory => NpgsqlFactory.Instance;
+
+ // GeoSpatial support, using imresamu/postgis instead of postgis/postgis for arm64 support, see https://github.com/postgis/docker-postgis/issues/216#issuecomment-2936824962
+ protected override PostgreSqlBuilder CreateBuilder() => new("imresamu/postgis:17-3.5");
protected override void Configure(DbContextOptionsBuilder optionsBuilder, string databaseName)
{
@@ -38,12 +35,4 @@ protected override void Configure(DbContextOptionsBuilder optionsBuilder, string
})
.UseBulkInsertPostgreSql();
}
-
- protected override async Task EnsureConnectedAsync(TDbContext context, string databaseName)
- {
- var container = (PostgreSqlContainer)DbContainer!;
-
- await container.ExecScriptAsync($"CREATE DATABASE \"{databaseName}\"");
- await base.EnsureConnectedAsync(context, databaseName);
- }
}
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerSqlServer.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerSqlServer.cs
index a11f7ac..b6fdd11 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerSqlServer.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerSqlServer.cs
@@ -1,5 +1,8 @@
-using DotNet.Testcontainers.Containers;
+using System.Data.Common;
+using DotNet.Testcontainers.Images;
+
+using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using PhenX.EntityFrameworkCore.BulkInsert.SqlServer;
@@ -7,6 +10,7 @@
using Testcontainers.MsSql;
using Xunit;
+using Xunit.Abstractions;
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContainer;
@@ -16,15 +20,12 @@ public class TestDbContainerSqlServerCollection : ICollectionFixture(messageSink)
{
- protected override IDatabaseContainer? GetDbContainer()
- {
- return new MsSqlBuilder()
- .WithImage("vibs2006/sql_server_fts") // Geo Geospatial support
- .WithReuse(true)
- .Build();
- }
+ public override DbProviderFactory DbProviderFactory => SqlClientFactory.Instance;
+
+ // GeoSpatial support
+ protected override MsSqlBuilder CreateBuilder() => new(new DockerImage("vibs2006/sql_server_fts", new Platform("amd64")));
protected override void Configure(DbContextOptionsBuilder optionsBuilder, string databaseName)
{
@@ -36,11 +37,16 @@ protected override void Configure(DbContextOptionsBuilder optionsBuilder, string
.UseBulkInsertSqlServer();
}
- protected override async Task EnsureConnectedAsync(TDbContext context, string databaseName)
+ protected override async Task EnsureDatabaseCreatedAsync(Microsoft.EntityFrameworkCore.DbContext dbContext)
{
- var container = (MsSqlContainer)DbContainer!;
-
- await container.ExecScriptAsync($"CREATE DATABASE [{databaseName}]");
- await base.EnsureConnectedAsync(context, databaseName);
+ try
+ {
+ await base.EnsureDatabaseCreatedAsync(dbContext);
+ }
+ catch (SqlException ex) when (ex.Number == 1801) // Database '%.*ls' already exists. Choose a different database name.
+ {
+ // Ignore, it means that the database was already created in the (reused) container
+ // https://learn.microsoft.com/en-us/sql/relational-databases/errors-events/database-engine-events-and-errors-1000-to-1999
+ }
}
}
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerSqlite.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerSqlite.cs
index c0245c5..24faf3f 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerSqlite.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerSqlite.cs
@@ -1,8 +1,8 @@
-using DotNet.Testcontainers.Containers;
-
+using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using PhenX.EntityFrameworkCore.BulkInsert.Sqlite;
+using PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContext;
using Xunit;
@@ -14,24 +14,26 @@ public class TestDbContainerSqliteCollection : ICollectionFixture null;
+ private SqliteConnection? _connection;
- protected override string GetConnectionString(string databaseName)
+ public async Task CreateContextAsync(string databaseName) where TDbContext : TestDbContextBase, new()
{
- return $"Data Source={Guid.NewGuid()}.db";
- }
+ _connection = new SqliteConnection("DataSource=:memory:");
+ await _connection.OpenAsync();
- protected override void Configure(DbContextOptionsBuilder optionsBuilder, string databaseName)
- {
- optionsBuilder
- .UseSqlite(GetConnectionString(databaseName))
- .UseBulkInsertSqlite();
+ var dbContext = new TDbContext
+ {
+ ConfigureOptions = builder => builder.UseSqlite(_connection).UseBulkInsertSqlite(),
+ };
+ await dbContext.Database.EnsureCreatedAsync();
+
+ return dbContext;
}
- protected override Task EnsureConnectedAsync(TDbContext context, string databaseName)
+ public void Dispose()
{
- return Task.CompletedTask;
+ _connection?.Dispose();
}
}
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContext/TestDbContextBase.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContext/TestDbContextBase.cs
index a18ab68..ab17cec 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContext/TestDbContextBase.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContext/TestDbContextBase.cs
@@ -4,7 +4,7 @@ namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContext;
public abstract class TestDbContextBase : Microsoft.EntityFrameworkCore.DbContext
{
- public Action ConfigureOptions { get; init; } = null!;
+ public Action? ConfigureOptions { get; init; }
- protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => ConfigureOptions(optionsBuilder);
+ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => (ConfigureOptions ?? throw new InvalidOperationException("ConfigureOptions must be set")).Invoke(optionsBuilder);
}
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/PhenX.EntityFrameworkCore.BulkInsert.Tests.csproj b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/PhenX.EntityFrameworkCore.BulkInsert.Tests.csproj
index 9ffca17..32533a4 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/PhenX.EntityFrameworkCore.BulkInsert.Tests.csproj
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/PhenX.EntityFrameworkCore.BulkInsert.Tests.csproj
@@ -8,6 +8,10 @@
true
+
+
+
+
all
@@ -25,11 +29,12 @@
-
-
-
-
-
+
+
+
+
+
+
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Basic/BasicTestsBase.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Basic/BasicTestsBase.cs
index b09493c..ccf26d9 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Basic/BasicTestsBase.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Basic/BasicTestsBase.cs
@@ -12,7 +12,7 @@
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.Tests.Basic;
-public abstract class BasicTestsBase(TestDbContainer dbContainer) : IAsyncLifetime
+public abstract class BasicTestsBase(IDbContextFactory dbContextFactory) : IAsyncLifetime
where TDbContext : TestDbContext, new()
{
private readonly Guid _run = Guid.NewGuid();
@@ -20,7 +20,7 @@ public abstract class BasicTestsBase(TestDbContainer dbContainer) :
public async Task InitializeAsync()
{
- _context = await dbContainer.CreateContextAsync("basic");
+ _context = await dbContextFactory.CreateContextAsync("basic");
}
public Task DisposeAsync()
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Geo/GeoTestsBase.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Geo/GeoTestsBase.cs
index 4fa047f..095d8f1 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Geo/GeoTestsBase.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Geo/GeoTestsBase.cs
@@ -11,7 +11,7 @@
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.Tests.Geo;
-public abstract class GeoTestsBase(TestDbContainer dbContainer) : IAsyncLifetime
+public abstract class GeoTestsBase(IDbContextFactory dbContextFactory) : IAsyncLifetime
where TDbContext : TestDbContextGeo, new()
{
private readonly Guid _run = Guid.NewGuid();
@@ -19,7 +19,7 @@ public abstract class GeoTestsBase(TestDbContainer dbContainer) : IA
public async Task InitializeAsync()
{
- _context = await dbContainer.CreateContextAsync("geo");
+ _context = await dbContextFactory.CreateContextAsync("geo");
}
public Task DisposeAsync()
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Merge/MergeTestsBase.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Merge/MergeTestsBase.cs
index 49f02ec..69661c6 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Merge/MergeTestsBase.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Merge/MergeTestsBase.cs
@@ -10,7 +10,7 @@
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.Tests.Merge;
-public abstract class MergeTestsBase(TestDbContainer dbContainer) : IAsyncLifetime
+public abstract class MergeTestsBase(IDbContextFactory dbContextFactory) : IAsyncLifetime
where TDbContext : TestDbContext, new()
{
private readonly Guid _run = Guid.NewGuid();
@@ -18,7 +18,7 @@ public abstract class MergeTestsBase(TestDbContainer dbContainer) :
public async Task InitializeAsync()
{
- _context = await dbContainer.CreateContextAsync("basic");
+ _context = await dbContextFactory.CreateContextAsync("basic");
}
public Task DisposeAsync()
diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Various/VariousTestsBase.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Various/VariousTestsBase.cs
index ca5724e..c1c21c7 100644
--- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Various/VariousTestsBase.cs
+++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Various/VariousTestsBase.cs
@@ -10,7 +10,7 @@
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.Tests.Various;
-public abstract class VariousTestsBase(TestDbContainer dbContainer) : IAsyncLifetime
+public abstract class VariousTestsBase(IDbContextFactory dbContextFactory) : IAsyncLifetime
where TDbContext : TestDbContext, new()
{
private readonly Guid _run = Guid.NewGuid();
@@ -18,7 +18,7 @@ public abstract class VariousTestsBase(TestDbContainer dbContainer)
public async Task InitializeAsync()
{
- _context = await dbContainer.CreateContextAsync("various");
+ _context = await dbContextFactory.CreateContextAsync("various");
}
public Task DisposeAsync()