using Microsoft.EntityFrameworkCore; using System; namespace Mirea.Api.DataAccess.Persistence.Common; public static class DbContextFactory { public static DbContextOptionsBuilder CreateDbContext(this DbContextOptionsBuilder options, DatabaseProvider provider) where TDbContext : BaseDbContext where TEntity : class { var dbContext = (TDbContext)Activator.CreateInstance(typeof(TDbContext), (DbContextOptions)options.Options)!; var configurationType = ConfigurationResolver.GetConfigurationType(provider); var configurationInstance = (IEntityTypeConfiguration)Activator.CreateInstance(configurationType)!; var modelBuilder = new ModelBuilder(); modelBuilder.ApplyConfiguration(configurationInstance); dbContext.ApplyConfigurations(modelBuilder); return options; } }