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