using CMS.Plugin.PipeLineLems.Domain.Data; using CMS.Project.Abstractions; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Volo.Abp.DependencyInjection; namespace CMS.Plugin.PipeLineLems { /// /// 工程数据库迁移器,当加载工程时此对象会被创建调用 /// public class CMSPluginRuntimeMigrator : IProjectRuntimeMigrator { /// /// 执行迁移 /// /// 当前要运行的工程 /// 存在运行工程上下文的serviceProvider /// public async Task UpgradeAsync(Project.Project project, IServiceProvider serviceProvider) { var objectAccessor = serviceProvider.GetService>(); if (objectAccessor != null) { objectAccessor.Value = project; } var logger = serviceProvider.GetRequiredService>(); try { // 通过serviceProvider获取自己的DbContext并进行创建或迁移流程 logger.LogInformation($"Start {project.Info.Id} PipeLineLems dbcontext create"); await serviceProvider.GetRequiredService().MigrateAsync(); } catch (Exception ex) { logger.LogError(ex, "Create PipeLineLems db failed"); } if (objectAccessor != null) { objectAccessor.Value = null; } } } }