From fca2ca672b7f7c958b6465c24d89d982887fabf8 Mon Sep 17 00:00:00 2001 From: crupest Date: Fri, 23 Apr 2021 19:26:33 +0800 Subject: fix: Fix dependency injection bug. --- .../DatabaseManagementService.cs | 26 +++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'BackEnd/Timeline') diff --git a/BackEnd/Timeline/Services/DatabaseManagement/DatabaseManagementService.cs b/BackEnd/Timeline/Services/DatabaseManagement/DatabaseManagementService.cs index 4d54d3dc..c3d9ac4e 100644 --- a/BackEnd/Timeline/Services/DatabaseManagement/DatabaseManagementService.cs +++ b/BackEnd/Timeline/Services/DatabaseManagement/DatabaseManagementService.cs @@ -1,5 +1,7 @@ using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using System; using System.Threading; using System.Threading.Tasks; using Timeline.Entities; @@ -8,22 +10,26 @@ namespace Timeline.Services.DatabaseManagement { public class DatabaseManagementService : IHostedService { - private readonly DatabaseContext _database; - private readonly IDatabaseBackupService _backupService; - private readonly IDatabaseCustomMigrator _customMigrator; + private readonly IServiceProvider _serviceProvider; - public DatabaseManagementService(DatabaseContext database, IDatabaseBackupService backupService, IDatabaseCustomMigrator customMigrator) + public DatabaseManagementService(IServiceProvider serviceProvider) { - _database = database; - _backupService = backupService; - _customMigrator = customMigrator; + _serviceProvider = serviceProvider; } public async Task StartAsync(CancellationToken cancellationToken = default) { - await _backupService.BackupAsync(cancellationToken); - await _database.Database.MigrateAsync(cancellationToken); - await _customMigrator.MigrateAsync(cancellationToken); + using var scope = _serviceProvider.CreateScope(); + var provider = scope.ServiceProvider; + + var backupService = provider.GetRequiredService(); + var database = provider.GetRequiredService(); + var customMigrator = provider.GetRequiredService(); + + + await backupService.BackupAsync(cancellationToken); + await database.Database.MigrateAsync(cancellationToken); + await customMigrator.MigrateAsync(cancellationToken); } public Task StopAsync(CancellationToken cancellationToken) -- cgit v1.2.3