2013-10-23 34 views
1

我在Internet上找不到解決我的問題的方法。如何在asp net mvc中運行遷移3

我有一個項目ASP淨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

http://msdn.microsoft.com/en-us/data/jj591621.aspx#generating – SLaks

回答

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部分是assembly/dll的路徑,其中包含應該執行的遷移。有關更多詳細信息,請參閱wiki

如果您使用的是Nant或Msbuild。他們也有跑步者。它們與命令行工具具有相同的選項。

還有一種運行FluentMigrator的方式,那就是直接通過代碼。一個例子就是這樣的class(朋友在Github上的項目)。然後在global.asax.cs中啓動該類,如this

+0

非常感謝您的回答 – netwer

+0

我的回答對您有幫助嗎?你還有問題嗎? –

0

您可以使用FluentMigrator的command-line tool

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

非常感謝您的回答 – netwer