MigrateAsync создает базу данных SQLite внутри папки bin

#c# #asp.net-core #.net-core #entity-framework-core

#c# #asp.net-core #.net-core #entity-framework-core

Вопрос:

     public static async Task Main(string[] args)
    {
        var host = CreateHostBuilder(args).Build();
        using (var scope = host.Services.CreateScope())
        {
            var services = scope.ServiceProvider;
            var loggerFactory = services.GetRequiredService<ILoggerFactory>();
            try 
            {
                var context = services.GetRequiredService<DiscordBotContext>();
                await context.Database.MigrateAsync();
            }
            catch (Exception ex)
            {
                var logger = loggerFactory.CreateLogger<Program>();
                logger.LogError(ex.Message);
            }
        }

        await host.RunAsync();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseStartup<Startup>(); 
  

У меня есть консольное приложение, я хочу применить миграции к базе данных SQLite при запуске приложения. Я решил сделать это в основном методе. Однако, когда я запускаю свое приложение, база данных SQLite создается в папке bin, а не в проекте консольного приложения (startup project).

Есть ли способ, которым я могу подсказать await context.Database.MigrateAsync(); , как создать ее в стартовом проекте?

У меня никогда не было этой проблемы с ASP.NET Ядро, но в консольном приложении база данных создается в папке bin.

Комментарии:

1. Вы уверены, что она всегда помещается в bin каталог, или она переходит в текущий рабочий каталог, где бы он ни находился, и вы запускаете программу в bin качестве текущего рабочего каталога?

2. Ах да, это была проблема! Я запускал кнопку «Пуск» в Rider IDE, но когда я запускаю программу, dotnet run она работает и помещает базу данных в проект запуска 🙂 Большое спасибо, @BenVoigt вы можете опубликовать это как ответ, если хотите.