1. 程式人生 > >使用FluentMigrator進行資料庫遷移

使用FluentMigrator進行資料庫遷移

介紹

在開發的過程中,經常會遇到資料庫結構變動(表新增、刪除,表列新增、修改、刪除等)。開發環境、測試環境、正式環境都要記性同步;如果你使用EF有自動遷移的功能,還是挺方便的。如果非EF我們需要手工處理,有時候會忘記,繁瑣。恰好 網上有提供的工具來實現類似EF的遷移功能。如:SQL Server Data ToolsFluent MigratorRoundhousEDbUpConclusion;本文將著重分享下如何使用Fluent Migrator進行資料庫遷移。

Fluent Migrator

Fluent Migrator.NET下的一個數據庫遷移框架。我們可以利用Migration

基類,編寫資料結構改變,它有兩個方法Up()Down()up方法用於升級遷移,down用於回滾。

 如何使用Fluent Migrator

下面以建立一個論壇,帖子表為例。

建立一個遷移類庫,命名為DatabaseMigration,在命令列中安裝:Install-Package FluentMigrator

 

然後新增一個遷移類CreateTopicTable_201811091800.cs繼承Migration,程式碼如下

 [Migration(201811091800)]
    public class CreateTopicTable_201811091800 : Migration
    {
       
        
public override void Up() { Create.Table("Topic") .WithColumn("Id").AsInt64().PrimaryKey().Identity() .WithColumn("TopicTitle").AsString(50); } public override void Down() { Delete.Table("Topic"); } }

我們建立了一個繼承Migration類。實現了介面Up()和down()方法,在up方法了建立一個Topic表並且添加了兩個欄位,我們進行升級遷移時將會呼叫up方法;down方法裡 我們可以進行回滾刪除該表。[Migration(201811091800)] 這個是版本定義,資料庫會自動建立一個表進行版本維護。FluentMigrator還提供其他的介面如:Alter,Create,Rename,Insert,Delete,Execute等。 

執行遷移

執行遷移利用Migrate.exe工具,(Install-Package FluentMigrator.Console)安裝之後會出現在packages\FluentMigrator.Console.3.1.3中

開啟cmd執行以下命令:

packages\FluentMigrator.Console.3.1.3\net461\any\Migrate.exe /conn "Data Source=.;Initial Catalog=migrationDemo;Persist Security Info=True;User ID=sa;Password=123;"/db sqlserver2014 /assembly  "DatabaseMigration\bin\Debug\DatabaseMigration.dll"

執行成功

開啟資料庫我們會發現多了一張Version表

開啟version表;你會發現表裡面有一條遷移記錄,version(版本號是可以自定義的),appliedon(執行時間),description(描述如果不自定義預設是類名稱)

回滾資料庫

業務的變更,經常會變動資料表或表結構,使用面命令很容易進行管理。

Migrate.exe /conn "Data Source=.;Initial Catalog=migrationDemo;Persist Security Info=True;User ID=sa;Password=lee2018;" /db sqlserver2014 /assembly "DatabaseMigration\bin\Debug\DatabaseMigration.dll" /task rollback --steps=1

 你會發現 命令結尾處多了task rollback --steps=1 ;如果沒有task  預設是指migrate up。 task用法如圖

 輸出顯示 CreateTopicTable_201811091800 reverted 恢復成功。此時實際上執行的是 Delete.Table("Topic");。

總結

使用 Fluent Migrator 很容易的去升級遷移和回滾資料庫。最後分享下遷移助手小工具

截圖如下:圖1 可以直接執行命令

 

圖2,如果在已有的資料表的情況下,利用自動建立免去了手工去編寫遷移檔案

最後附上原始碼地址https://github.com/ChengLab/DBMigrationTool 

參考:

Ants-----https://www.cnblogs.com/ants/p/4037312.html

官網----https://fluentmigrator.github.io/index.html