我没有在互联网上找到解决问题的方法。
我有一个项目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”中的代码添加到“产品”表中? 抱歉我的英文。
答案 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