У меня есть ASP. NET Основной проект, в котором я храню строку подключения PostgreSQL в переменной окружения. Когда я пытаюсь выполнить начальную миграцию, сборка проекта завершается успешно, но затем выдается исключение:
System.ArgumentNullException: значение не может быть нулевым. (Параметр 'connectionString').
Поэтому я предполагаю, что он неправильно считывает строку подключения. Я предоставляю строку подключения к моему DbContext в методе ConfigureServices следующим образом:
services.AddDbContext<GoalsContext>(options =>
options.UseNpgsql(Environment.GetEnvironmentVariable("CONNECTION_STRING")));
Я также пытался это исправить, создав реализацию IDesignTimeDbContextFactory, например:
public class GoalsContextFactory : IDesignTimeDbContextFactory<GoalsContext>
{
public GoalsContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<GoalsContext>();
optionsBuilder.UseNpgsql(Environment.GetEnvironmentVariable("CONNECTION_STRING");
return new GoalsContext(optionsBuilder.Options);
}
}
Любая помощь будет Буду очень признателен.
Обновление: Я, как предлагалось в комментариях, прочитал официальную документацию по переменным и конфигурации среды, и я проверил, существует ли переменная в первую очередь, создав контроллер с одним методом, который возвращает строку подключения, подобную этой:
[HttpGet]
public string GetConnectionString()
{
return _config["CONNECTION_STRING"];
}
И правильная строка подключения действительно отображается в браузере, когда я его запускаю, но когда я пытался добавить начальную миграцию в базу данных, исключение, которое я Я уже упоминал, что все еще брошен.
Я также пытался закомментировать мою реализацию IDesignTimeDbContextFactory и вручную добавить вызов метода .AddEnvironmentVariables в мой Program.cs (который я читаю, выполняется автоматически, но я все еще хотеть попробуйте), но ничего из этого не имело никакого эффекта - мой контроллер все еще выдает строку подключения, в то время как миграция Entity Framework Core все еще не получает ее.
Короче говоря, строка подключения да существует, и я даже могу вывести ее, но миграция все еще не выполняется из-за того же исключения.