Files

25 lines
1.1 KiB
C#

namespace PostFundManagement.Infrastructure.Database.Factories;
public sealed partial class ApplicationDbContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext>
{
public ApplicationDbContext CreateDbContext(string[] args)
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddUserSecrets<IInfrastructure>(optional: true)
.AddEnvironmentVariables()
.Build();
var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();
var connectionString = configuration.GetConnectionString(DatabaseConfigName)
?? throw new InvalidOperationException($"Connection string '{DatabaseConfigName}' was not found in configuration.");
optionsBuilder.UseNpgsql(connectionString, npgsqlOptions =>
npgsqlOptions.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName));
var designTimeTenantService = new DesignTimeTenantContextService();
return new ApplicationDbContext(optionsBuilder.Options, designTimeTenantService);
}
}