JiShe.IOT.Admin/src/JiShe.IoT.DbMigrator/DbMigratorHostedService.cs

43 lines
1.5 KiB
C#
Raw Normal View History

2025-03-11 10:24:11 +08:00
using Volo.Abp.Data;
2025-05-27 14:27:50 +08:00
namespace JiShe.IoT.DbMigrator
2025-03-11 10:24:11 +08:00
{
public class DbMigratorHostedService : IHostedService
{
private readonly IHostApplicationLifetime _hostApplicationLifetime;
private readonly IConfiguration _configuration;
public DbMigratorHostedService(IHostApplicationLifetime hostApplicationLifetime,
IConfiguration configuration)
{
_hostApplicationLifetime = hostApplicationLifetime;
_configuration = configuration;
}
public async Task StartAsync(CancellationToken cancellationToken)
{
2025-05-27 14:27:50 +08:00
using (var application = await AbpApplicationFactory.CreateAsync<IoTDbMigratorModule>(options =>
2025-03-11 10:24:11 +08:00
{
options.Services.ReplaceConfiguration(_configuration);
options.UseAutofac();
options.Services.AddLogging(c => c.AddSerilog());
// https://github.com/abpframework/abp/pull/15208
options.AddDataMigrationEnvironment();
}))
{
await application.InitializeAsync();
await application
.ServiceProvider
2025-05-27 14:27:50 +08:00
.GetRequiredService<IoTDbMigrationService>()
2025-03-11 10:24:11 +08:00
.MigrateAsync();
await application.ShutdownAsync();
_hostApplicationLifetime.StopApplication();
}
}
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
}
}