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