Как определить, существует ли база данных в Main до вызова CreateHostBuilder? - PullRequest
0 голосов
/ 15 марта 2020

Я успешно создал регистратор, используя Serilog, но не могу определить, как определить, существует ли база данных сервера SQL, в которую я веду журнал, до создания регистратора. Цель состоит в том, чтобы создать регистратор перед этой строкой в ​​моей главной функции, чтобы я получил все журналы запуска:

var host = CreateHostBuilder(args).Build();

Однако, если я это сделаю, и база данных не ' Пока не существует, таблица регистрации не будет создана при первом запуске приложения. Он будет создан во второй раз, когда я запускаю приложение, потому что я создаю и заполняю базу данных после этой строки кода.

Я хочу иметь возможность создать регистратор до запуска CreateHostBuilder, если база данных существует или создать регистратор после CreateHostBuilder и SeedDatabase запускается, если база данных еще не существует. Я не могу запустить CreateLogger () дважды либо я получу исключение.

Вот код:

public static void Main(string[] args)
{
    try
    {
        // If I create the logger here I'll see all the startup logs
        // if the database exists. If the database doesn't exist yet the 
        // logging table won't get created until the second time I startup the app.
        CreateLogger();

        Log.Information("Starting Up");

        var host = CreateHostBuilder(args).Build();

        SeedDatabase(host);

        // If I create the logger here I don't get all of the startup logs but
        // it ensures that if the database hasn't been created and seeded yet the 
        // logging table is still created.
        CreateLogger();

        host.Run();
    }
    catch (Exception exception)
    {
        Log.Fatal(exception, "Application start-up failed");
    }
    finally
    {
        Log.CloseAndFlush();
    }
}

1 Ответ

0 голосов
/ 15 марта 2020

Сделайте некоторые резервные логи c в CreateLogger, чтобы он входил в файл, если база данных не существует, и после создания БД, если ее нужно было создать, вы можете записать содержимое этого файла журнала в БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...