52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Microsoft.Extensions.Configuration;
 | |
| using Microsoft.Extensions.DependencyInjection;
 | |
| using Microsoft.Extensions.Hosting;
 | |
| using Serilog;
 | |
| using System.Threading;
 | |
| using System.Threading.Tasks;
 | |
| using KonSoft.Shared.DbMigrator.Data;
 | |
| using Volo.Abp;
 | |
| using Volo.Abp.Data;
 | |
| 
 | |
| namespace KonSoft.Shared.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<KonSoftSharedDbMigratorModule>(options =>
 | |
|         {
 | |
|            options.Services.ReplaceConfiguration(_configuration);
 | |
|            options.UseAutofac();
 | |
|            options.Services.AddLogging(c => c.AddSerilog());
 | |
|            options.AddDataMigrationEnvironment();
 | |
|         }))
 | |
|         {
 | |
|             await application.InitializeAsync();
 | |
| 
 | |
|             await application
 | |
|                 .ServiceProvider
 | |
|                 .GetRequiredService<DbMigrationService>()
 | |
|                 .MigrateAsync();
 | |
| 
 | |
|             await application.ShutdownAsync();
 | |
| 
 | |
|             _hostApplicationLifetime.StopApplication();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public Task StopAsync(CancellationToken cancellationToken)
 | |
|     {
 | |
|         return Task.CompletedTask;
 | |
|     }
 | |
| }
 |