如何在asp net mvc 3中运行迁移

时间:2013-10-23 14:15:25

标签: asp.net asp.net-mvc-3 fluent-migrator

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

我有一个项目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”中的代码添加到“产品”表中? 抱歉我的英文。

2 个答案:

答案 0 :(得分: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"

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

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

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

答案 1 :(得分:0)

您可以使用FluentMigrator的command-line tool

Migrate.exe /connection "Data Source=db\db.sqlite;Version=3;" /db sqlite /target your.migrations.dll