#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 вы можете опубликовать это как ответ, если хотите.