erp-platform/api/src/Erp.Platform.DbMigrator/DbMigratorHostedService.cs

59 lines
1.8 KiB
C#
Raw Normal View History

2025-05-06 06:45:49 +00:00
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
2025-11-11 19:49:52 +00:00
using Erp.Platform.Data;
2025-05-06 06:45:49 +00:00
using Serilog;
using Volo.Abp;
using Volo.Abp.Data;
2025-11-11 19:49:52 +00:00
namespace Erp.Platform.DbMigrator;
2025-05-06 06:45:49 +00:00
public class DbMigratorHostedService : IHostedService
{
private readonly IHostApplicationLifetime _hostApplicationLifetime;
private readonly IConfiguration _configuration;
private readonly IHostEnvironment _hostEnvironment;
public DbMigratorHostedService(
IHostApplicationLifetime hostApplicationLifetime,
IConfiguration configuration,
IHostEnvironment hostEnvironment)
{
_hostApplicationLifetime = hostApplicationLifetime;
_configuration = configuration;
_hostEnvironment = hostEnvironment;
}
public async Task StartAsync(CancellationToken cancellationToken)
{
using (var application = await AbpApplicationFactory.CreateAsync<PlatformDbMigratorModule>(options =>
{
options.Services.ReplaceConfiguration(_configuration);
options.Services.AddSingleton(_hostEnvironment);
options.UseAutofac();
options.Services.AddLogging(c => c.AddSerilog());
options.AddDataMigrationEnvironment();
}))
{
await application.InitializeAsync();
await application
.ServiceProvider
.GetRequiredService<PlatformDbMigrationService>()
.MigrateAsync();
await application.ShutdownAsync();
_hostApplicationLifetime.StopApplication();
}
}
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
}
2025-11-11 19:49:52 +00:00