Мигратордотнет: Как проверить, ожидает ли миграция?

Я хочу остановить процесс сборки через MSBuild, если есть ожидающие миграции.

Но я не хочу вызывать цель Migrate при создании моего проекта.

Итак, как я могу проверить только ожидающие миграции с Migratordotnet?
Я просто хочу использовать его как флаг, чтобы остановить процесс сборки..!!

Заранее спасибо!

2 ответа

Решение

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

Вот некоторый базовый код для консольного приложения, который объединяет код другого вопроса. Он просто пишет сообщение в окно консоли, если миграции доступны или нет. Вам нужно будет расширить его до того, что вам нужно, но это должно сработать. TestMigration1 должен быть заменен одним из ваших классов миграции в сборке, где находятся ваши миграции. Вам, очевидно, нужно сделать ссылку на этот проект из вашего консольного приложения.

internal class Program {
    private static void Main(string[] args) {
        Assembly asm = Assembly.GetAssembly(typeof (TestMigration1));
        const string myConnectionString =
            "Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;";
        ITransformationProvider provider = ProviderFactory.Create("SqlServer", myConnectionString);
        var loader = new MigrationLoader(provider, asm, false);
        List<long> availableMigrations = loader.GetAvailableMigrations();

        Console.WriteLine(availableMigrations.Count > 0 ? "Migrations available" : "No migrations");
    }
}

Я думаю, что это не поддерживается Migratordotnet!

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

Другие вопросы по тегам