FluentMigrator - 它如何知道要执行哪个迁移

问题描述

当您启动应用程序时,FluentMigrator 如何知道要执行/迁移哪些迁移?

示例:我已经执行了两次迁移(1 和 2)。现在,我创建第三个迁移并为其指定 ID 3。当我启动我的应用程序时,FluentMigrator 将执行迁移,但它怎么知道跳过前两个?

using FluentMigrator;

namespace test
{
    [Migration(3)]
    public class AddLogTable : Migration
    {
        public override void Up()
        {
            Create.Table("Log")
                .WithColumn("Id").AsInt64().PrimaryKey().Identity()
                .WithColumn("Text").Asstring();
        }

        public override void Down()
        {
            Delete.Table("Log");
        }
    }
}

解决方法

在数据库中创建了一个名为 VersionInfo 的表,其中记录了有关每次迁移的信息。在应用迁移之前,将执行检查以查看此表中已有哪些记录。

,

默认将所有信息存储在“VersionInfo”表中。使用此信息,它可以确定需要将哪些迁移应用于该数据库,然后将连续执行它需要应用的每个迁移。另外,如果需要,您可以manage metadata of this table