你好,這里是 Dotnet 工具箱,定期分享 Dotnet 有趣,實用的工具和組件,希望對您有用!
簡介
FluentMigrator 是一個開源的數據庫遷移框架,可以幫助用戶在開發過程中保持數據庫的一致性。它提供了一個簡潔的 Fluent API,可以讓你使用 C# 寫出簡潔的遷移腳本。FluentMigrator 提供了一系列的 API 用來創建和管理數據庫遷移,并且支持多種不同的數據庫系統,包括 MySQL、PostgreSQL 和 SQL Server 等。
使用 FluentMigrator 可以輕松地管理數據庫遷移,這對于敏捷開發項目特別有用。比如,當開發團隊的成員對數據庫做出更改時,FluentMigrator 可以自動檢測并應用這些更改,從而確保數據庫保持一致性。
如何使用
下面是一個示例,展示了如何在 .NET 中使用 FluentMigrator。
首先,創建一個控制臺項目。
dotnet?new?console?--name?test
添加以下 Nuget 包, 這里我們使用了 SQLite 數據庫。
dotnet?add?package?FluentMigratordotnet?add?package?FluentMigrator.Runnerdotnet?add?package?FluentMigrator.Runner.SQLitedotnet?add?package?Microsoft.Data.Sqlite
使用下面的代碼創建一個遷移類,20220430_AddLogTable.cs, 這里我們使用了 Migration 特性指定了版本。
using?FluentMigrator;namespace?test
{[Migration(20220430121800)]public?class?AddLogTable?:?Migration{public?override?void?Up(){Create.Table("Log").WithColumn("Id").AsInt64().PrimaryKey().Identity().WithColumn("Text").AsString();}public?override?void?Down(){Delete.Table("Log");}}
}
這將會創建 Log 表和 ID , Text 列。
準備好遷移類后, 使用下面的代碼,運行我們的遷移。
using?System;
using?System.Linq;using?FluentMigrator.Runner;
using?FluentMigrator.Runner.Initialization;using?Microsoft.Extensions.DependencyInjection;namespace?test
{class?Program{static?void?Main(string[]?args){var?serviceProvider?=?CreateServices();?using?(var?scope?=?serviceProvider.CreateScope()){UpdateDatabase(scope.ServiceProvider);}}private?static?IServiceProvider?CreateServices(){return?new?ServiceCollection()?.AddFluentMigratorCore().ConfigureRunner(rb?=>?rb?.AddSQLite()?.WithGlobalConnectionString("Data?Source=test.db")?.ScanIn(typeof(AddLogTable).Assembly).For.Migrations())?.AddLogging(lb?=>?lb.AddFluentMigratorConsole())?.BuildServiceProvider(false);}private?static?void?UpdateDatabase(IServiceProvider?serviceProvider){?var?runner?=?serviceProvider.GetRequiredService<IMigrationRunner>();?runner.MigrateUp();}}
}
運行上面的代碼,程序會自動運行遷移,創建指定的 Log 表。
在進行多版本的更新后, 如何進行回滾呢,你可能已經注意到了, 上面的代碼中我們實現 Down 方法, 刪除了 Log 表。它表示,如果我們回滾到 Migration(20220430121800) 這個版本時,它會執行 Down 方法并刪除 Log 表。
FluentMigrator 的主要優點在于它的易用性和靈活性。它的語法簡潔明了,能夠讓開發人員快速編寫數據庫遷移腳本。此外,FluentMigrator 還支持在遷移過程中執行多種操作,包括創建表、添加字段、修改表結構等。
總之,FluentMigrator 是一款優秀的數據庫遷移工具,能夠為開發人員提供簡潔、靈活的方式來管理數據庫遷移。
項目地址
https://github.com/fluentmigrator/fluentmigrator
Dotnet 工具箱
掃碼關注我們
分享
點收藏
點點贊
點在看