Осмотреться кажется невозможным, но это действительно так?
Основная цель - понять, является ли среда разработкой или производством, поэтому я могу передать соответствующую строку подключения из файла конфигурации.
Вот мой текущий код IDesignTimeDbContextFactory
:
public class ApplicationContextFactory : IDesignTimeDbContextFactory<AppDbContext>
{
private IConfiguration Configuration { get; }
public ApplicationContextFactory()
{
var projectPath = AppDomain.CurrentDomain.BaseDirectory.Split(new string[] { $@"bin{Path.DirectorySeparatorChar}" }, StringSplitOptions.None)[0];
Configuration = new ConfigurationBuilder()
.SetBasePath(projectPath)
.AddJsonFile("appsettings.json")
.Build();
}
public AppDbContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<AppDbContext>();
optionsBuilder.UseNpgsql(Configuration.GetConnectionString(EnvironmentContants.ConnectionStringDevelopment));
return new AppDbContext(optionsBuilder.Options);
}
}
В части optionsBuilder.UseNpgsql()
мне понадобится объект среды хостинга, чтобы понять, является ли он средой IsProduction
или IsDevelopment
.