using CMS.Plugin.PipeLineLems.Domain; using CMS.Plugin.PipeLineLems.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; using Microsoft.Extensions.Configuration; namespace CMS.Plugin.PipeLineLems.MySQL; /// /// This class is needed for EF Core console commands /// (like Add-Migration and Update-Database commands) /// public class CMSPluginDbContextFactory : IDesignTimeDbContextFactory { /// /// Creates a new instance of a derived context. /// /// Arguments provided by the design-time service. public CMSPluginDbContext CreateDbContext(string[] args) { CMSPluginEfCoreEntityExtensionMappings.Configure(); var configuration = BuildConfiguration(); var builder = new DbContextOptionsBuilder() .UseMySql(configuration.GetConnectionString("Default"), MySqlServerVersion.LatestSupportedServerVersion, x => x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema)); return new CMSPluginDbContext(builder.Options); } /// /// Builds the configuration. /// /// private static IConfigurationRoot BuildConfiguration() { var builder = new ConfigurationBuilder() .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../CMS.Plugin.PipeLineLems.EntityFrameworkCore/")) .AddJsonFile("appsettings.json", optional: false); return builder.Build(); } }