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.SqlServer;
///
/// 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()
.UseSqlServer(configuration.GetConnectionString("Default"), 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();
}
}