Fluent Migrator
https://www.cnblogs.com/chengtian/p/9938756.html
使用FluentMigrator進行數據庫遷移
介紹
在開發的過程中,經常會遇到數據庫結構變動(表新增、刪除,表列新增、修改、刪除等)。開發環境、測試環境、正式環境都要記性同步;如果你使用EF有自動遷移的功能,還是挺方便的。如果非EF我們需要手工處理,有時候會忘記,繁瑣。恰好 網上有提供的工具來實現類似EF的遷移功能。如:SQL Server Data Tools、Fluent Migrator、RoundhousE、 DbUp、Conclusion;本文將着重分享下如何使用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
參考: