43 lines
1.5 KiB
C#
43 lines
1.5 KiB
C#
using Volo.Abp.Data;
|
|
|
|
namespace JiShe.IoT.DbMigrator
|
|
{
|
|
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)
|
|
{
|
|
using (var application = await AbpApplicationFactory.CreateAsync<IoTDbMigratorModule>(options =>
|
|
{
|
|
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
|
|
.GetRequiredService<IoTDbMigrationService>()
|
|
.MigrateAsync();
|
|
|
|
await application.ShutdownAsync();
|
|
|
|
_hostApplicationLifetime.StopApplication();
|
|
}
|
|
}
|
|
|
|
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
|
|
}
|
|
}
|