diff --git a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs index 6c09a80f73..08cc66130c 100644 --- a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs +++ b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs @@ -2,6 +2,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Volo.Abp.BackgroundWorkers; +using Volo.Abp.Data; using Volo.Abp.DistributedLocking; using Volo.Abp.Guids; using Volo.Abp.Modularity; @@ -19,10 +20,20 @@ namespace Volo.Abp.BackgroundJobs; )] public class AbpBackgroundJobsModule : AbpModule { - public async override Task OnApplicationInitializationAsync(ApplicationInitializationContext context) + public override void ConfigureServices(ServiceConfigurationContext context) { - var options = context.ServiceProvider.GetRequiredService>().Value; - if (options.IsJobExecutionEnabled) + if (context.Services.IsDataMigrationEnvironment()) + { + Configure(options => + { + options.IsJobExecutionEnabled = false; + }); + } + } + + public override async Task OnApplicationInitializationAsync(ApplicationInitializationContext context) + { + if (context.ServiceProvider.GetRequiredService>().Value.IsJobExecutionEnabled) { await context.AddBackgroundWorkerAsync(); } diff --git a/framework/src/Volo.Abp.Data/Volo/Abp/Data/AbpDataMigrationEnvironment.cs b/framework/src/Volo.Abp.Data/Volo/Abp/Data/AbpDataMigrationEnvironment.cs new file mode 100644 index 0000000000..cdbdf13eb0 --- /dev/null +++ b/framework/src/Volo.Abp.Data/Volo/Abp/Data/AbpDataMigrationEnvironment.cs @@ -0,0 +1,6 @@ +namespace Volo.Abp.Data; + +public class AbpDataMigrationEnvironment +{ + +} diff --git a/framework/src/Volo.Abp.Data/Volo/Abp/Data/AbpDataMigrationEnvironmentExtensions.cs b/framework/src/Volo.Abp.Data/Volo/Abp/Data/AbpDataMigrationEnvironmentExtensions.cs new file mode 100644 index 0000000000..29907b9385 --- /dev/null +++ b/framework/src/Volo.Abp.Data/Volo/Abp/Data/AbpDataMigrationEnvironmentExtensions.cs @@ -0,0 +1,38 @@ +using System; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Data; + +public static class AbpDataMigrationEnvironmentExtensions +{ + public static void AddDataMigrationEnvironment(this AbpApplicationCreationOptions options, AbpDataMigrationEnvironment environment = null) + { + options.Services.AddDataMigrationEnvironment(environment ?? new AbpDataMigrationEnvironment()); + } + + public static void AddDataMigrationEnvironment(this IServiceCollection services, AbpDataMigrationEnvironment environment = null) + { + services.AddObjectAccessor(environment ?? new AbpDataMigrationEnvironment()); + } + + public static AbpDataMigrationEnvironment GetDataMigrationEnvironment(this IServiceCollection services) + { + return services.GetObjectOrNull>()?.Value; + } + + public static bool IsDataMigrationEnvironment(this IServiceCollection services) + { + return services.GetDataMigrationEnvironment() != null; + } + + public static AbpDataMigrationEnvironment GetDataMigrationEnvironment(this IServiceProvider serviceProvider) + { + return serviceProvider.GetService>()?.Value; + } + + public static bool IsDataMigrationEnvironment(this IServiceProvider serviceProvider) + { + return serviceProvider.GetDataMigrationEnvironment() != null; + } +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs index 74cd00cffb..ba8105cb88 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs @@ -7,6 +7,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Polly; using Volo.Abp.Caching; +using Volo.Abp.Data; using Volo.Abp.DependencyInjection; using Volo.Abp.FeatureManagement.Localization; using Volo.Abp.Features; @@ -39,6 +40,15 @@ public class AbpFeatureManagementDomainModule : AbpModule { options.MapCodeNamespace("AbpFeatureManagement", typeof(AbpFeatureManagementResource)); }); + + if (context.Services.IsDataMigrationEnvironment()) + { + Configure(options => + { + options.SaveStaticFeaturesToDatabase = false; + options.IsDynamicFeatureStoreEnabled = false; + }); + } } private readonly CancellationTokenSource _cancellationTokenSource = new(); diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs index ddf5be479e..71b42a20fb 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs @@ -9,6 +9,7 @@ using Polly; using Volo.Abp.Authorization; using Volo.Abp.Authorization.Permissions; using Volo.Abp.Caching; +using Volo.Abp.Data; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain; using Volo.Abp.Json; @@ -26,6 +27,18 @@ public class AbpPermissionManagementDomainModule : AbpModule { private readonly CancellationTokenSource _cancellationTokenSource = new(); + public override void ConfigureServices(ServiceConfigurationContext context) + { + if (context.Services.IsDataMigrationEnvironment()) + { + Configure(options => + { + options.SaveStaticPermissionsToDatabase = false; + options.IsDynamicPermissionStoreEnabled = false; + }); + } + } + public override void OnApplicationInitialization(ApplicationInitializationContext context) { AsyncHelper.RunSync(() => OnApplicationInitializationAsync(context)); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Program.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Program.cs index d922551429..fb3c83f100 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Program.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Program.cs @@ -1,7 +1,7 @@ -using MyCompanyName.MyProjectName.Blazor.Server; using MyCompanyName.MyProjectName.Data; using Serilog; using Serilog.Events; +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName; @@ -36,6 +36,10 @@ public class Program .UseAutofac() .UseSerilog(); await builder.AddApplicationAsync(); + if (IsMigrateDatabase(args)) + { + builder.Services.AddDataMigrationEnvironment(); + } var app = builder.Build(); await app.InitializeApplicationAsync(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Program.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Program.cs index 8787d01b8e..ec8097460d 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Program.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Program.cs @@ -1,8 +1,7 @@ -using System; -using MyCompanyName.MyProjectName.Blazor.Server; using MyCompanyName.MyProjectName.Data; using Serilog; using Serilog.Events; +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName; @@ -42,6 +41,10 @@ public class Program .UseAutofac() .UseSerilog(); await builder.AddApplicationAsync(); + if (IsMigrateDatabase(args)) + { + builder.Services.AddDataMigrationEnvironment(); + } var app = builder.Build(); await app.InitializeApplicationAsync(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Program.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Program.cs index d09fba6395..fb3c83f100 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Program.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Program.cs @@ -1,6 +1,7 @@ using MyCompanyName.MyProjectName.Data; using Serilog; using Serilog.Events; +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName; @@ -35,6 +36,10 @@ public class Program .UseAutofac() .UseSerilog(); await builder.AddApplicationAsync(); + if (IsMigrateDatabase(args)) + { + builder.Services.AddDataMigrationEnvironment(); + } var app = builder.Build(); await app.InitializeApplicationAsync(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Program.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Program.cs index c762c9b245..ec8097460d 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Program.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Program.cs @@ -1,7 +1,7 @@ -using System; using MyCompanyName.MyProjectName.Data; using Serilog; using Serilog.Events; +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName; @@ -41,6 +41,10 @@ public class Program .UseAutofac() .UseSerilog(); await builder.AddApplicationAsync(); + if (IsMigrateDatabase(args)) + { + builder.Services.AddDataMigrationEnvironment(); + } var app = builder.Build(); await app.InitializeApplicationAsync(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Program.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Program.cs index ac3634377d..fb3c83f100 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Program.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Program.cs @@ -1,7 +1,7 @@ using MyCompanyName.MyProjectName.Data; using Serilog; using Serilog.Events; - +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName; @@ -36,6 +36,10 @@ public class Program .UseAutofac() .UseSerilog(); await builder.AddApplicationAsync(); + if (IsMigrateDatabase(args)) + { + builder.Services.AddDataMigrationEnvironment(); + } var app = builder.Build(); await app.InitializeApplicationAsync(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Program.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Program.cs index 8a6393168c..ec8097460d 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Program.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Program.cs @@ -1,8 +1,7 @@ -using System; using MyCompanyName.MyProjectName.Data; using Serilog; using Serilog.Events; - +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName; @@ -42,6 +41,10 @@ public class Program .UseAutofac() .UseSerilog(); await builder.AddApplicationAsync(); + if (IsMigrateDatabase(args)) + { + builder.Services.AddDataMigrationEnvironment(); + } var app = builder.Build(); await app.InitializeApplicationAsync(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/DbMigratorHostedService.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/DbMigratorHostedService.cs index 0b31a64ddd..92e723ba59 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/DbMigratorHostedService.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/DbMigratorHostedService.cs @@ -6,6 +6,7 @@ using Microsoft.Extensions.Hosting; using MyCompanyName.MyProjectName.Data; using Serilog; using Volo.Abp; +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName.DbMigrator; @@ -27,6 +28,7 @@ public class DbMigratorHostedService : IHostedService options.Services.ReplaceConfiguration(_configuration); options.UseAutofac(); options.Services.AddLogging(c => c.AddSerilog()); + options.AddDataMigrationEnvironment(); })) { await application.InitializeAsync(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs index 51bc87cd52..06c4b3d1b5 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs @@ -1,6 +1,5 @@ using MyCompanyName.MyProjectName.EntityFrameworkCore; using Volo.Abp.Autofac; -using Volo.Abp.BackgroundJobs; using Volo.Abp.Modularity; namespace MyCompanyName.MyProjectName.DbMigrator; @@ -12,8 +11,5 @@ namespace MyCompanyName.MyProjectName.DbMigrator; )] public class MyProjectNameDbMigratorModule : AbpModule { - public override void ConfigureServices(ServiceConfigurationContext context) - { - Configure(options => options.IsJobExecutionEnabled = false); - } + }