using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Serilog; using System.Threading; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Data; namespace LINGYUN.Abp.MicroService.AdminService; public class AdminServiceDbMigratorHostedService : IHostedService { private readonly IHostApplicationLifetime _hostApplicationLifetime; private readonly IConfiguration _configuration; public AdminServiceDbMigratorHostedService( IHostApplicationLifetime hostApplicationLifetime, IConfiguration configuration) { _hostApplicationLifetime = hostApplicationLifetime; _configuration = configuration; } public async Task StartAsync(CancellationToken cancellationToken) { using var application = await AbpApplicationFactory .CreateAsync(options => { options.Services.ReplaceConfiguration(_configuration); options.UseAutofac(); options.Services.AddLogging(c => c.AddSerilog()); options.AddDataMigrationEnvironment(); }); await application.InitializeAsync(); await application .ServiceProvider .GetRequiredService() .CheckAndApplyDatabaseMigrationsAsync(); await application.ShutdownAsync(); _hostApplicationLifetime.StopApplication(); } public Task StopAsync(CancellationToken cancellationToken) { return Task.CompletedTask; } }