Консольный проект, созданный на хосте do tnet generi c, не получает пользовательских секретов для ef-миграций. - PullRequest
1 голос
/ 04 марта 2020

Я следовал указаниям здесь , чтобы создать консольное приложение с поддержкой ядра ef. Он использует пользовательские секреты для хранения строк подключения и работает правильно. Тем не менее, при попытке запустить

    class Program
    {
        static async Task Main(string[] args)
        {
            await CreateHostBuilder(args).RunConsoleAsync();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseEnvironment("Development")
            .ConfigureServices(ConfigureServices);

        private static void ConfigureServices(HostBuilderContext hostBuilderContext, IServiceCollection services)
        {
            var connectionStrings = hostBuilderContext.Configuration
                .GetSection("ConnectionStrings")
                .Get<ConnectionStrings>();
            services.AddSingleton(new Config
            {
                ConnectionStrings = connectionStrings
            });
            services.AddDbContext<TargetDbContext>(options => 
                options.UseNpgsql(connectionStrings.TargetDb));
        }
    }

    public class Config
    {
        public ConnectionStrings ConnectionStrings { get; set; }
    }

    public class ConnectionStrings
    {
        public string AdminDb { get; set; }
        public string TenantTemplate { get; set; }
        public string TargetDb { get; set; }
    }
dotnet ef migrations add create_target_databse --context TargetDbContext

Не удается найти секреты пользователя и объект строки подключения имеет значение null. Что не так и как я могу это решить?

PS: У меня не было проблем с asp. net базовым шаблоном проекта. Я сталкиваюсь с этой проблемой только в консоли.

...