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..1c8daf3f82 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,10 @@ namespace Volo.Abp.BackgroundJobs; )] public class AbpBackgroundJobsModule : AbpModule { - public async override Task OnApplicationInitializationAsync(ApplicationInitializationContext context) + public override async Task OnApplicationInitializationAsync(ApplicationInitializationContext context) { - var options = context.ServiceProvider.GetRequiredService>().Value; - if (options.IsJobExecutionEnabled) + if (!context.ServiceProvider.IsMigrationEnvironment() && + 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..050ee2127e --- /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 AddMigrationEnvironment(this AbpApplicationCreationOptions options, AbpDataMigrationEnvironment environment = null) + { + options.Services.AddMigrationEnvironment(environment ?? new AbpDataMigrationEnvironment()); + } + + public static void AddMigrationEnvironment(this IServiceCollection services, AbpDataMigrationEnvironment environment = null) + { + services.AddObjectAccessor(environment ?? new AbpDataMigrationEnvironment()); + } + + public static AbpDataMigrationEnvironment GetMigrationEnvironment(this IServiceCollection services) + { + return services.GetObjectOrNull>()?.Value; + } + + public static bool IsMigrationEnvironment(this IServiceCollection services) + { + return services.GetMigrationEnvironment() != null; + } + + public static AbpDataMigrationEnvironment GetMigrationEnvironment(this IServiceProvider serviceProvider) + { + return serviceProvider.GetService>()?.Value; + } + + public static bool IsMigrationEnvironment(this IServiceProvider serviceProvider) + { + return serviceProvider.GetMigrationEnvironment() != 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..015df09cdc 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; @@ -62,6 +63,11 @@ public class AbpFeatureManagementDomainModule : AbpModule private void InitializeDynamicFeatures(ApplicationInitializationContext context) { + if (context.ServiceProvider.IsMigrationEnvironment()) + { + return; + } + var options = context .ServiceProvider .GetRequiredService>() 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..67c438582e 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; @@ -45,6 +46,11 @@ public class AbpPermissionManagementDomainModule : AbpModule private void InitializeDynamicPermissions(ApplicationInitializationContext context) { + if (context.ServiceProvider.IsMigrationEnvironment()) + { + return; + } + var options = context .ServiceProvider .GetRequiredService>() 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 d4139fb375..36ef778848 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,9 +1,7 @@ -using MyCompanyName.MyProjectName.Blazor.Server; using MyCompanyName.MyProjectName.Data; using Serilog; using Serilog.Events; -using Volo.Abp.FeatureManagement; -using Volo.Abp.PermissionManagement; +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName; @@ -40,17 +38,7 @@ public class Program await builder.AddApplicationAsync(); if (IsMigrateDatabase(args)) { - builder.Services.Configure(options => - { - options.IsDynamicPermissionStoreEnabled = false; - options.SaveStaticPermissionsToDatabase = false; - }); - - builder.Services.Configure(options => - { - options.IsDynamicFeatureStoreEnabled = false; - options.SaveStaticFeaturesToDatabase = false; - }); + builder.Services.AddMigrationEnvironment(); } 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 033e0df78b..542b860add 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,10 +1,7 @@ -using System; -using MyCompanyName.MyProjectName.Blazor.Server; using MyCompanyName.MyProjectName.Data; using Serilog; using Serilog.Events; -using Volo.Abp.FeatureManagement; -using Volo.Abp.PermissionManagement; +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName; @@ -46,17 +43,7 @@ public class Program await builder.AddApplicationAsync(); if (IsMigrateDatabase(args)) { - builder.Services.Configure(options => - { - options.IsDynamicPermissionStoreEnabled = false; - options.SaveStaticPermissionsToDatabase = false; - }); - - builder.Services.Configure(options => - { - options.IsDynamicFeatureStoreEnabled = false; - options.SaveStaticFeaturesToDatabase = false; - }); + builder.Services.AddMigrationEnvironment(); } 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 5fafe94bc9..36ef778848 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,8 +1,7 @@ using MyCompanyName.MyProjectName.Data; using Serilog; using Serilog.Events; -using Volo.Abp.FeatureManagement; -using Volo.Abp.PermissionManagement; +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName; @@ -39,17 +38,7 @@ public class Program await builder.AddApplicationAsync(); if (IsMigrateDatabase(args)) { - builder.Services.Configure(options => - { - options.IsDynamicPermissionStoreEnabled = false; - options.SaveStaticPermissionsToDatabase = false; - }); - - builder.Services.Configure(options => - { - options.IsDynamicFeatureStoreEnabled = false; - options.SaveStaticFeaturesToDatabase = false; - }); + builder.Services.AddMigrationEnvironment(); } 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 158edc894d..542b860add 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Program.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Program.cs @@ -1,9 +1,7 @@ -using System; using MyCompanyName.MyProjectName.Data; using Serilog; using Serilog.Events; -using Volo.Abp.FeatureManagement; -using Volo.Abp.PermissionManagement; +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName; @@ -45,17 +43,7 @@ public class Program await builder.AddApplicationAsync(); if (IsMigrateDatabase(args)) { - builder.Services.Configure(options => - { - options.IsDynamicPermissionStoreEnabled = false; - options.SaveStaticPermissionsToDatabase = false; - }); - - builder.Services.Configure(options => - { - options.IsDynamicFeatureStoreEnabled = false; - options.SaveStaticFeaturesToDatabase = false; - }); + builder.Services.AddMigrationEnvironment(); } 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 d8529fffec..36ef778848 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,9 +1,7 @@ using MyCompanyName.MyProjectName.Data; using Serilog; using Serilog.Events; -using Volo.Abp.FeatureManagement; -using Volo.Abp.PermissionManagement; - +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName; @@ -40,17 +38,7 @@ public class Program await builder.AddApplicationAsync(); if (IsMigrateDatabase(args)) { - builder.Services.Configure(options => - { - options.IsDynamicPermissionStoreEnabled = false; - options.SaveStaticPermissionsToDatabase = false; - }); - - builder.Services.Configure(options => - { - options.IsDynamicFeatureStoreEnabled = false; - options.SaveStaticFeaturesToDatabase = false; - }); + builder.Services.AddMigrationEnvironment(); } 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 90d099439f..542b860add 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Program.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Program.cs @@ -1,10 +1,7 @@ -using System; using MyCompanyName.MyProjectName.Data; using Serilog; using Serilog.Events; -using Volo.Abp.FeatureManagement; -using Volo.Abp.PermissionManagement; - +using Volo.Abp.Data; namespace MyCompanyName.MyProjectName; @@ -46,17 +43,7 @@ public class Program await builder.AddApplicationAsync(); if (IsMigrateDatabase(args)) { - builder.Services.Configure(options => - { - options.IsDynamicPermissionStoreEnabled = false; - options.SaveStaticPermissionsToDatabase = false; - }); - - builder.Services.Configure(options => - { - options.IsDynamicFeatureStoreEnabled = false; - options.SaveStaticFeaturesToDatabase = false; - }); + builder.Services.AddMigrationEnvironment(); } 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..827bd31505 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.AddMigrationEnvironment(); })) { 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 f0c746f0aa..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,9 +1,6 @@ using MyCompanyName.MyProjectName.EntityFrameworkCore; using Volo.Abp.Autofac; -using Volo.Abp.BackgroundJobs; -using Volo.Abp.FeatureManagement; using Volo.Abp.Modularity; -using Volo.Abp.PermissionManagement; namespace MyCompanyName.MyProjectName.DbMigrator; @@ -14,23 +11,5 @@ namespace MyCompanyName.MyProjectName.DbMigrator; )] public class MyProjectNameDbMigratorModule : AbpModule { - public override void ConfigureServices(ServiceConfigurationContext context) - { - Configure(options => - { - options.IsJobExecutionEnabled = false; - }); - Configure(options => - { - options.IsDynamicPermissionStoreEnabled = false; - options.SaveStaticPermissionsToDatabase = false; - }); - - Configure(options => - { - options.IsDynamicFeatureStoreEnabled = false; - options.SaveStaticFeaturesToDatabase = false; - }); - } }