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