using CMS.Plugin.PipeLineLems.Domain.Data; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Volo.Abp.DependencyInjection; namespace CMS.Plugin.PipeLineLems.EntityFrameworkCore; /// public class CMSPluginDbSchemaMigrator : ICMSPluginDbSchemaMigrator, ITransientDependency { private readonly IServiceProvider _serviceProvider; private readonly ILogger _logger; /// /// Initializes a new instance of the class. /// /// The service provider. public CMSPluginDbSchemaMigrator(IServiceProvider serviceProvider, ILogger logger) { _serviceProvider = serviceProvider; _logger = logger; } /// public async Task MigrateAsync() { /* We intentionally resolving the CMSDbContext * from IServiceProvider (instead of directly injecting it) * to properly get the connection string of the current tenant in the * current scope. */ var database = _serviceProvider.GetRequiredService().Database; _logger.LogInformation($"Start database {database.GetDbConnection().Database} migrate"); await database.MigrateAsync(); } }