【问题标题】:Migratordotnet : How to check if a migration is pending?Migratordotnet:如何检查迁移是否挂起?
【发布时间】:2011-07-20 12:34:15
【问题描述】:

如果有挂起的迁移,我想通过 MSBuild 停止我的构建过程。

但我不想在构建项目时触发 Migrate 目标。

那么,如何使用 Migratordotnet 仅检查待处理的迁移?
我只是想用它作为一个标志来停止我的构建过程.. !!

提前致谢!

【问题讨论】:

    标签: .net data-migration migratordotnet migrator.net


    【解决方案1】:

    检查this other question,其中显示了一些代码,可让您检查是否有待处理的迁移。很有可能在 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");
        }
    }
    

    【讨论】:

    • 我想从 MSBuild 外部做,无论如何你能推荐一些示例代码吗?
    • 使用其他问题中的代码,您只需编写一个小型控制台实用程序即可在 MSBuild 之外执行此操作,并以您喜欢的任何方式执行它。
    • 该代码的最后一行返回等待将数据库带到当前版本的迁移数。如果返回零,则无需进行任何迁移。
    • 嗯.. 这不是我想要的,但如果这解决了我的问题 - 我会回复。
    • 我认为您需要仔细考虑您的问题并解释您的构建过程到底是什么。如果您的过程实际上只是构建项目或解决方案,那么不,停止构建过程是行不通的,因为您需要在检查待处理的迁移之前完成构建。
    【解决方案2】:

    我认为 Migratordotnet 不支持它!

    他们只为 MSBuild 提供 1 个目标,旨在执行迁移。所以没有其他方式可以与之交互以检查迁移。

    【讨论】:

    • 告诉我有没有其他方法...?
    猜你喜欢
    • 2017-05-11
    • 2015-10-28
    • 2010-10-28
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 2020-01-17
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多