diff --git a/src/modules/Elsa.Quartz.EntityFrameworkCore.MySql/MySqlQuartzExtensions.cs b/src/modules/Elsa.Quartz.EntityFrameworkCore.MySql/MySqlQuartzExtensions.cs
index 5e74dc062..716a98edc 100644
--- a/src/modules/Elsa.Quartz.EntityFrameworkCore.MySql/MySqlQuartzExtensions.cs
+++ b/src/modules/Elsa.Quartz.EntityFrameworkCore.MySql/MySqlQuartzExtensions.cs
@@ -18,13 +18,12 @@ public static class MySqlQuartzExtensions
///
/// Configures the to use the MySQL job store.
///
- public static QuartzFeature UseMySql(this QuartzFeature feature, string connectionString = Constants.DefaultConnectionString, bool useClustering = true)
+ public static QuartzFeature UseMySql(this QuartzFeature feature, string connectionString = Constants.DefaultConnectionString, bool useClustering = true, bool useContextPooling = false)
{
- feature.Services.AddDbContextFactory(options =>
- {
- // Use MySQL migrations.
- options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString), sqlServerDbContextOptionsBuilder => { sqlServerDbContextOptionsBuilder.MigrationsAssembly(typeof(MySqlQuartzDbContext).Assembly.GetName().Name); });
- });
+ if (useContextPooling)
+ feature.Services.AddPooledDbContextFactory(options => UseMySql(connectionString, options));
+ else
+ feature.Services.AddDbContextFactory(options => UseMySql(connectionString, options));
feature.ConfigureQuartz += quartz =>
{
@@ -32,7 +31,7 @@ public static class MySqlQuartzExtensions
{
store.UseNewtonsoftJsonSerializer();
store.UseMySqlConnector(options => options.ConnectionString = connectionString);
-
+
if (useClustering)
store.UseClustering();
});
@@ -43,4 +42,10 @@ public static class MySqlQuartzExtensions
return feature;
}
+
+ private static void UseMySql(string connectionString, DbContextOptionsBuilder options)
+ {
+ // Use MySQL migrations.
+ options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString), sqlServerDbContextOptionsBuilder => { sqlServerDbContextOptionsBuilder.MigrationsAssembly(typeof(MySqlQuartzDbContext).Assembly.GetName().Name); });
+ }
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Quartz.EntityFrameworkCore.PostgreSql/PostgreSqlQuartzExtensions.cs b/src/modules/Elsa.Quartz.EntityFrameworkCore.PostgreSql/PostgreSqlQuartzExtensions.cs
index 6a9f16a24..4e5050243 100644
--- a/src/modules/Elsa.Quartz.EntityFrameworkCore.PostgreSql/PostgreSqlQuartzExtensions.cs
+++ b/src/modules/Elsa.Quartz.EntityFrameworkCore.PostgreSql/PostgreSqlQuartzExtensions.cs
@@ -18,13 +18,12 @@ public static class PostgreSqlQuartzExtensions
///
/// Configures the to use the PostgreSQL job store.
///
- public static QuartzFeature UsePostgreSql(this QuartzFeature feature, string connectionString = Constants.DefaultConnectionString, bool useClustering = true)
+ public static QuartzFeature UsePostgreSql(this QuartzFeature feature, string connectionString = Constants.DefaultConnectionString, bool useClustering = true, bool useContextPooling = false)
{
- feature.Services.AddDbContextFactory(options =>
- {
- // Use PostgreSQL migrations.
- options.UseNpgsql(connectionString, sqlServerDbContextOptionsBuilder => { sqlServerDbContextOptionsBuilder.MigrationsAssembly(typeof(PostgreSqlQuartzDbContext).Assembly.GetName().Name); });
- });
+ if (useContextPooling)
+ feature.Services.AddPooledDbContextFactory(options => UseNpgsql(connectionString, options));
+ else
+ feature.Services.AddDbContextFactory(options => UseNpgsql(connectionString, options));
feature.ConfigureQuartz += quartz =>
{
@@ -48,4 +47,10 @@ public static class PostgreSqlQuartzExtensions
return feature;
}
+
+ private static void UseNpgsql(string connectionString, DbContextOptionsBuilder options)
+ {
+ // Use PostgreSQL migrations.
+ options.UseNpgsql(connectionString, sqlServerDbContextOptionsBuilder => { sqlServerDbContextOptionsBuilder.MigrationsAssembly(typeof(PostgreSqlQuartzDbContext).Assembly.GetName().Name); });
+ }
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Quartz.EntityFrameworkCore.SqlServer/SqlServerQuartzExtensions.cs b/src/modules/Elsa.Quartz.EntityFrameworkCore.SqlServer/SqlServerQuartzExtensions.cs
index d3e580929..3c1e2a3a1 100644
--- a/src/modules/Elsa.Quartz.EntityFrameworkCore.SqlServer/SqlServerQuartzExtensions.cs
+++ b/src/modules/Elsa.Quartz.EntityFrameworkCore.SqlServer/SqlServerQuartzExtensions.cs
@@ -18,13 +18,12 @@ public static class SqlServerQuartzExtensions
///
/// Configures the to use the SQL Server job store.
///
- public static QuartzFeature UseSqlServer(this QuartzFeature feature, string connectionString = Constants.DefaultConnectionString, bool useClustering = true)
+ public static QuartzFeature UseSqlServer(this QuartzFeature feature, string connectionString = Constants.DefaultConnectionString, bool useClustering = true, bool useContextPooling = false)
{
- feature.Services.AddDbContextFactory(options =>
- {
- // Use SQL Server migrations.
- options.UseSqlServer(connectionString, sqlServerDbContextOptionsBuilder => { sqlServerDbContextOptionsBuilder.MigrationsAssembly(typeof(SqlServerQuartzDbContext).Assembly.GetName().Name); });
- });
+ if (useContextPooling)
+ feature.Services.AddPooledDbContextFactory(options => UseSqlServer(connectionString, options));
+ else
+ feature.Services.AddDbContextFactory(options => UseSqlServer(connectionString, options));
feature.ConfigureQuartz += quartz =>
{
@@ -48,4 +47,10 @@ public static class SqlServerQuartzExtensions
return feature;
}
+
+ private static void UseSqlServer(string connectionString, DbContextOptionsBuilder options)
+ {
+ // Use SQL Server migrations.
+ options.UseSqlServer(connectionString, sqlServerDbContextOptionsBuilder => { sqlServerDbContextOptionsBuilder.MigrationsAssembly(typeof(SqlServerQuartzDbContext).Assembly.GetName().Name); });
+ }
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Quartz.EntityFrameworkCore.Sqlite/SqliteQuartzExtensions.cs b/src/modules/Elsa.Quartz.EntityFrameworkCore.Sqlite/SqliteQuartzExtensions.cs
index 9121397a2..be13a1a49 100644
--- a/src/modules/Elsa.Quartz.EntityFrameworkCore.Sqlite/SqliteQuartzExtensions.cs
+++ b/src/modules/Elsa.Quartz.EntityFrameworkCore.Sqlite/SqliteQuartzExtensions.cs
@@ -18,13 +18,12 @@ public static class SqliteQuartzExtensions
///
/// Configures the to use the SQLite job store.
///
- public static QuartzFeature UseSqlite(this QuartzFeature feature, string connectionString = Constants.DefaultConnectionString)
+ public static QuartzFeature UseSqlite(this QuartzFeature feature, string connectionString = Constants.DefaultConnectionString, bool useContextPooling = false)
{
- feature.Services.AddDbContextFactory(options =>
- {
- // Use SQLite migrations.
- options.UseSqlite(connectionString, sqlite => { sqlite.MigrationsAssembly(typeof(SqliteQuartzDbContext).Assembly.GetName().Name); });
- });
+ if (useContextPooling)
+ feature.Services.AddPooledDbContextFactory(options => UseSqlite(connectionString, options));
+ else
+ feature.Services.AddDbContextFactory(options => UseSqlite(connectionString, options));
feature.ConfigureQuartz += quartz =>
{
@@ -40,4 +39,10 @@ public static class SqliteQuartzExtensions
return feature;
}
+
+ private static void UseSqlite(string connectionString, DbContextOptionsBuilder options)
+ {
+ // Use SQLite migrations.
+ options.UseSqlite(connectionString, sqlite => { sqlite.MigrationsAssembly(typeof(SqliteQuartzDbContext).Assembly.GetName().Name); });
+ }
}
\ No newline at end of file