2

我没有在互联网上找到解决我的问题的方法。

我有一个项目 asp net mvc 3。我有一个数据库,我有一个来自数据库的类似实体类:

public class Product : Entity
{
    [Required(ErrorMessage = "Error!")]
    public virtual string Name { get; set; }

    [Required(ErrorMessage = "Error!")]
    public virtual int Age { get; set; }
}

在我的项目中,我想使用迁移。在项目中我添加了库 FluentMigrator,创建了以下类(这是一个带有测试表的测试类):

[Migration(1)]
public class Step1 : Migration
{
    public override void Up()
    {
        #region Create Tables
        Create.Table("Products").InSchema("dbo")
            .WithColumn("ProductId").AsInt32().Identity().NotNullable().PrimaryKey()
            .WithColumn("Name").AsString(255).Nullable()
            .WithColumn("Age").AsInt32().Nullable();

        #endregion
        this.Execute.Script("test.sql");
    }

    public override void Down()
    {
        #region Delete Tables
        Delete.Table("Products").InSchema("dbo");
        #endregion
    }

}

同样在我的解决方案中,我创建了文件 - “test.sql”。该文件包含以下代码:

INSERT INTO [Products] ([Name],[Age])
 VALUES ('test12', 1111)

请告诉我,如何在我的项目中运行迁移,将文件“test.sql”中的代码添加到表“产品”中?对不起我的英语不好。

4

2 回答 2

1

迁移定义了您要对数据库进行的更改。要实际执行它,您必须使用 FluentMigrator 的运行器之一。其中有 3 个。Nuget 包附带了一个命令行工具,它从命令行运行,如下所示:

.\packages\FluentMigrator.1.1.1.0\tools\migrate -conn "server=.\SQLEXPRESS;uid=test;pwd=test;database=FluentMigratorSample" --provider sqlserver2012 --assembly ".\bin\Debug\FluentMigratorSample.dll"

这有4个部分。.\packages\FluentMigrator.1.1.1.0\tools\migrate是 Nuget 包中 migrate.exe 的路径。-conn 部分是连接字符串。-provider 部分指定它是哪种类型的数据库。-assemby 部分是程序集/dll 的路径,其中包含应执行的迁移。有关更多详细信息,请参阅wiki

如果您使用的是 Nant 或 Msbuild。他们也有跑步者。它们具有与命令行工具相同的选项。

还有另一种运行 FluentMigrator 的方法,即直接通过代码。一个例子就是这个(一个朋友在 Github 上的项目)。然后在 global.asax.cs 中像这样在启动时调用此类

于 2013-10-23T20:37:36.337 回答
0

您可以使用 FluentMigrator 的命令行工具

Migrate.exe /connection "Data Source=db\db.sqlite;Version=3;" /db sqlite /target your.migrations.dll
于 2013-10-23T20:32:29.343 回答